使用 spring 引导更新 mongodb 中的嵌套数组对象字段
Update nested array object field in mongodb using spring boot
mongodb 的新手,
尝试更新文档的多个数组对象字段。
没有得到预期的结果
文档结构:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"items" : [{
Name:{
"id":1,
"item_name" : "my_item_one",
"price" : 20
},
Details:{
"Date" : "10/02/2022",
"Address":"test"
}}],
[{
Name:{
"id":2,
"item_name" : "my_item_two",
"price" : 20
},
Details:{
"Date" : "10/02/2022",
"Address":"test"
}}]
}
根据id需要更新日期
Spring 启动代码
Query query = new Query(Criteria.where("user_id").is("123456").and("items")
.eleMatch(Criteria.where("items.Name.id").is(1)));
Update update = new Update().set("items.0.Details.Date", "29/01/2022");
mongoOperation.findAndModify(query, update, Items.class);
但是当我 运行 这个查询时它返回 null
任何人都可以帮忙吗
谢谢
,
也试过
Query query = new Query(Criteria.where("user_id").is("123456").and("items")
.eleMatch(Criteria.where("items.Name.id").is(1)));
Update update = new Update().set("items.Details.Date", "29/01/2022");
mongoOperation.findAndModify(query, update, Items.class);
我认为您的查询没有找到任何要更新的内容。尝试 运行 将查询作为 java 中的“查找”并查看返回了哪个文档。我的直觉是“和 eleMatch”部分是错误的。只需通过 user_id 查询整个文档,并在特定字段上执行更新。此外,您描述的更新语法将更新所有项目,您需要在数组中指定索引。也许在 java 中手动进行更新会更容易。
mongodb 的新手, 尝试更新文档的多个数组对象字段。 没有得到预期的结果
文档结构:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"items" : [{
Name:{
"id":1,
"item_name" : "my_item_one",
"price" : 20
},
Details:{
"Date" : "10/02/2022",
"Address":"test"
}}],
[{
Name:{
"id":2,
"item_name" : "my_item_two",
"price" : 20
},
Details:{
"Date" : "10/02/2022",
"Address":"test"
}}]
}
根据id需要更新日期
Spring 启动代码
Query query = new Query(Criteria.where("user_id").is("123456").and("items")
.eleMatch(Criteria.where("items.Name.id").is(1)));
Update update = new Update().set("items.0.Details.Date", "29/01/2022");
mongoOperation.findAndModify(query, update, Items.class);
但是当我 运行 这个查询时它返回 null 任何人都可以帮忙吗 谢谢 , 也试过
Query query = new Query(Criteria.where("user_id").is("123456").and("items")
.eleMatch(Criteria.where("items.Name.id").is(1)));
Update update = new Update().set("items.Details.Date", "29/01/2022");
mongoOperation.findAndModify(query, update, Items.class);
我认为您的查询没有找到任何要更新的内容。尝试 运行 将查询作为 java 中的“查找”并查看返回了哪个文档。我的直觉是“和 eleMatch”部分是错误的。只需通过 user_id 查询整个文档,并在特定字段上执行更新。此外,您描述的更新语法将更新所有项目,您需要在数组中指定索引。也许在 java 中手动进行更新会更容易。