繁体   English   中英

春季数据MongoRepository在查询之前检查整个文档是否存在文档

[英]spring data MongoRepository check if a document exists before inserting by querying with entire document

我正在尝试创建一个Web服务,该服务接收一个json对象并根据该对象是否已经作为我的mongodb中的文档存在而执行一些操作。 如果该文档已经存在,则只需要执行我的操作即可。 如果不是,我必须先将其插入,然后执行操作。

使用Spring数据MongoRepository或MongoTemplate,如何检查文档是否已存在-使用要插入的整个文档? 我在这里不能使用_id。 如果整个文档已经存在,则不必插入新文档。 但是,如果至少一个字段不同,则必须输入一个新文档。

例如:

@Document (collection = "foo")
class Foo {

   @Id
   String id;
   String name;
   List<Address> address   
   ... many more attributes
}

如果我使用不带_id的Foo对象收到请求,如何检查此文件是否已作为mongodb集合中的文档存在?

谢谢!

我认为这就是您所需要的: 查找和修改文档您可以指定所有必须匹配的字段,即查询中所有文档都必须是唯一的,并将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);

您为什么不在某个字段上索引您的收藏夹? 假设您在所有文档中都有名称,请按名称查询数据库,如果没有得到任何结果,请添加它。 如果得到结果,请将其与请求中的结果进行比较。 比较这两个最好的方法是重写equals方法。 将请求主体转换为文档的对象,并将其与您从DB获得的内容进行比较。 如果无法确定将在请求中传递的内容,则可能必须根据传递的字段来查询数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM