我有一个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) 但是,它仅更新每个文档中的第一个匹配数组元素。(这是$-位置运算符的定义行为。)
如何更新所有匹配的数组元素?
对我有用的是:
db.collection.find({ _id: ObjectId('4d2d8deff4e6c1d71fc29a07') }) .forEach(function (doc) { doc.events.forEach(function (event) { if (event.profile === 10) { event.handled=0; } }); db.collection.save(doc); }); 我认为对于mongo新手以及熟悉JQuery和朋友的任何人来说都更加清楚。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。