Обновить объект массива mongoDB
У меня есть массив объектов, и я хотел бы обновить количество объектов, где categoryId = "menu2" и subCategoryId = "1".
в моем mongodb у меня сейчас есть две записи в массиве:
{
"_id": "xyz",
"badges": [{
"count": 2,
"categorieId": "menu1",
"subCategorieId": "1"
}, {
"count": 1,
"categorieId": "menu2",
"subCategorieId": "1"
}]
}
если я сейчас выполню следующий метод, объект с категориейId "menu1" будет обновлен, а не мой menu2...
return getCollection()
.updateOne(
and(
eq("badges.categorieId", "menu2"),
eq("badges.subCategorieId", "1")
),
Updates.inc("badges.$.count", 1)
);
Я использую коллекцию io.quarkus.mongodb.reactive.ReactiveMongoCollection.
Заранее спасибо!
1 ответ
Отфильтрованный позиционный оператор работает:
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")
))));
Почему другой метод не работает, я, к сожалению, не знаю.