mongodb - 更新 MongoDB 文档中的复杂对象

标签 mongodb meteor

我的 MongoDB 文档中有一个与此类似的“复杂”对象:

{_id: "5zvYuC37aXSAjGNEg",
  profile: {
    name: "profile_name",
    keys:[{
      keyID: "12345",
      code: "12345",
      chars:[{
        name: "char_name1",
        char_id: "12345",
        active: 0
      }, {
        name: "char_name2",
        char_id: "67890",
        active: 0
      }]
    }]
  }
}

是否可以根据我传递给查询的 char_id 来更新 active 的值? MySQL 中的等效项可能类似于:

更新某个表 SET active = 1 WHERE char_id = 12345

我尝试运行此查询:
Meteor.users.update(Meteor.userId(), {char_id:char_id}, {$set:{active:1} });
但在此之后,我的对象丢失了除 _idchar_id 之外的所有值。

最佳答案

我不知道如何在 Meteor 中编写,但下面的查询应该在 mongo shell 中更新

db.Test.update({"profile.keys.chars.char_id":"12345"}, {$set: {"profile.keys.0.chars.$.active": "1"}})

关于mongodb - 更新 MongoDB 文档中的复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399195/

相关文章:

mongodb - 如何在 mongodb 中将项目分组到对象中?

javascript - 根据用户个人资料中的数组在集合中查找

javascript - 如何签署 AWS API 请求?

javascript - 在meteor中获取facebook信息

node.js - Elasticsearch搜索解析异常,但返回结果

mongodb - 结合koa-passport和koa-router(获取用户数据)

mongodb - 如何找到具有数组元素的文档?

node.js - 如何使用 NodeJS 与 mongo Db 中的用户和给定记录关联

node.js - 自托管 Meteor App 光纤问题

javascript - 将 Meteor 应用程序部署到 Galaxy 的步骤是什么?