我有一个包含元素数组的 Mongo 文档。
我想重置.handled数组中所有对象的属性 where .profile= XX.
.handled
.profile
文件格式如下:
{ "_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)
然而,它只更新每个文档中 第一个 匹配的数组元素。(这是$ - 位置运算符的定义行为。)
如何更新 所有 匹配的数组元素?
更新: 从 Mongo 3.6 版开始,此答案不再有效,因为上述问题已修复,并且有办法实现此目的。 请检查其他答案。
目前无法使用位置运算符更新数组中的所有项目。见 JIRA http://jira.mongodb.org/browse/SERVER-1243
作为一种解决方法,您可以: