![](/img/trans.png)
[英]How to find and update nested array element in an object on mongodb
[英]Update array object mongoDB
我有一个对象数组,想更新 object 的计数,其中 categoryId =“menu2”和 subCategoryId =“1”。
在我的 mongodb 中,我目前在数组中有两条记录:
{
"_id": "xyz",
"badges": [{
"count": 2,
"categorieId": "menu1",
"subCategorieId": "1"
}, {
"count": 1,
"categorieId": "menu2",
"subCategorieId": "1"
}]
}
如果我现在执行以下方法,将更新带有 categorieId“menu1”的 object 而不是我的 menu2...
return getCollection()
.updateOne(
and(
eq("badges.categorieId", "menu2"),
eq("badges.subCategorieId", "1")
),
Updates.inc("badges.$.count", 1)
);
我正在使用 io.quarkus.mongodb.reactive.ReactiveMongoCollection。
提前致谢!
您可以使用“$[]”数组更新运算符来更新数组中的所有匹配元素。 在您的情况下,它将是这样的:
Updates.inc("badges.$[].count",1)
有关官方MongoDB 文档的更多详细信息
过滤后的位置运算符正在工作:
return getCollection().updateOne(
eq("_id", "xyz"),
Updates.combine(
Updates.inc("badges.$[badges].count", 1)
),
new UpdateOptions()
.arrayFilters(Arrays.asList(
and(
eq("badges.categorieId", "menu2"),
eq("badges.subCategorieId", "1")
))));
不幸的是,为什么其他方法不起作用,我不知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.