gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:48:39 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com