开发者社区> 问答> 正文

如何在mongodb中更新多个数组元素

已解决

我有一个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) 但是,它仅更新每个文档中的第一个匹配数组元素。(这是$-位置运算符的定义行为。)

如何更新所有匹配的数组元素?

展开
收起
保持可爱mmm 2020-02-06 22:38:41 400 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    对我有用的是:

    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

    2020-02-06 22:39:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载