gpt4 book ai didi

java - Spring 数据蒙戈: upsert with various fields updated

转载 作者:行者123 更新时间:2023-12-01 20:51:53 27 4
gpt4 key购买 nike

我正在寻找使用 Spring Data 提供的 API 对 Mongo Collection 实现 upsert 操作的正确方法。

详细来说,我有以下用例。集合 collection 的架构如下所示:

{
_id: "some_id",
field1: "value1",
field2: "value2",
subdocument1: {
// A subdocument with some fields
},
subdocument2: {
// A subdocument with some other fields
}
}

字段 field1field2 始终存在,但 subdocument1subdocument2 将在不同时刻插入:一个在第一次插入期间,第二个在后续更新期间。

我看到 MongoTemplate 有和 upsert方法。使用这种方法,我必须构建自己的更新操作。

Query query = Query.query(Criteria.where("_id").is("some_id"));
Update.update("_id", "some_id")
.set("field1", "value1")
.set("field2", "value2")
.set("subdocument1", subdocumentObject);
mongoTemplate.upsert(query, update, Collection.class);

我不明白这是否是我正在寻找的东西以及是否有更好的方法。

最佳答案

我相信您正在寻找的是subdocument1$setOnInsert。所以类似的东西应该适合你。

Query query = Query.query(Criteria.where("_id").is("some_id"));
Update update = Update.update("_id", "some_id")
.set("field1", "value1")
.set("field2", "value2")
.set("subdocument2", subdocumentObject2)
.setOnInsert("subdocument1", subdocumentObject1);

更多信息请点击 https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/

关于java - Spring 数据蒙戈: upsert with various fields updated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248469/

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