Я просто хотел добавить другое решение, которое работает для меня и довольно просто. Здесь это просто массив тегов (строк), поэтому чтобы обновить тег с именем «test» до «change», просто сделайте это:
я есть документ Mongo, который содержит массив элементов.
Я хотел бы сбросить.handled
атрибут всех объектов в массиве, где.profile
= XX
Документ находится в следующей форме:
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id": "714638ba-2e08-2168-2b99-00002f3d43c0",
"events": [{
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 20,
"data": "....."
}
...
]
}
Итак, я попробовал следующее:
.update({"events.profile":10},{$set:{"events.$.handled":0}},false,true)
Однако он обновляет толькопервый соответствующий элемент массива в каждом документе. (Это определенное поведение для$ - позиционный оператор.)
Как я могу обновитьвсе соответствующие элементы массива?