我的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} });
但在此之后,我的对象丢失了除_id
和char_id
之外的所有值。
答案 0 :(得分:2)
我不知道如何在流星中写,但下面的查询应该在mongo shell中更新
db.Test.update({"profile.keys.chars.char_id":"12345"}, {$set: {"profile.keys.0.chars.$.active": "1"}})