更新MongoDB文档中的复杂对象

时间:2013-05-06 12:53:13

标签: 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
      }]
    }]
  }
}

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

UPDATE sometable SET active = 1 WHERE char_id = 12345

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

1 个答案:

答案 0 :(得分:2)

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

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