java - spring data MongoRepository 在插入之前通过查询整个文档来检查文档是否存在

标签 java spring mongodb

我正在尝试创建一个 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/

相关文章:

java - InternalResourceViewResolver 和 Winstone 的问题

java - 写入多个文件时,为 MultiResourceItemWriter 创建的所有文件指定页眉和页脚 -spring batch

python - 名称错误 : name 'TigerXtrm' is not defined

c# - 使用 MongoDb 和 C# 的模式依赖类到无模式文档

java - WCF 互操作性测试

java - 构建项目错误: cannot find symbol

java - Android Studio : Passing variable through another variable doesn't work

java - log4j.xml 加载不记录消息

python - Django 1.5 与 mongodb

java - 为什么我的 JFrame 图标没有从默认的 java 图标更改?