我正在尝试创建一个 Web 服务,它接收 json 对象并根据该对象是否已作为文档存在于我的 mongodb 中来执行某些操作。如果该文档已经存在,我只需执行我的操作。如果没有,我必须先插入它,然后执行操作。
使用 spring data MongoRepository 或 MongoTemplate,如何检查文档是否已存在 - 使用我要插入的整个文档? 我不能在这里使用 _id 。如果整个文档已经存在,我不必插入新文档。但如果至少有一个字段不同,我就必须输入一个新文档。
例如:
@Document (collection = "foo")
class Foo {
@Id
String id;
String name;
List<Address> address
... many more attributes
}
如果我收到使用不带 _id 的 Foo 对象的请求,如何检查它是否已作为文档存在于我的 mongodb 集合中?
谢谢!
最佳答案
我认为这就是您所需要的:Finding and modifying documents您可以指定必须匹配的所有字段,即对于查询中的所有文档必须是唯一的,并将 upsert 选项设置为 true,如下所示:
Query query = new Query(Criteria.where("firstName").is("Ruturaj"));
Person p = mongoTemplate.findAndModify(query, update, new FindAndModifyOptions().returnNew(true).upsert(true), Person.class);
关于java - spring data MongoRepository 在插入之前通过查询整个文档来检查文档是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435212/