如何在单个命令中更新部分文档?

时间:2015-05-20 23:22:31

标签: mongodb

我有这样的文件:

{
   _id : ...,
   key : { 
        a : 1,
        b : 2,
        c : 3
   }
}

我会用这个更新这个集合:

var data = {
    b : 4,
    c : 5
};

我希望我的文档能够更新到这个:

{
   _id : ...,
   xxx : { 
        a : 1,
        b : 4,
        c : 5
   }
}

所以,如果我这样做:

db.myColl.update(  _id , { $set: {"xxx": data } );

它最终将会出现如下文档:

{
   _id : ...,
   xxx: { 
      b : 4,
      c : 5
   }
}

所以我必须做两次:

db.myColl.update(  _id , { $set: {"xxx.b": data.b } );
db.myColl.update(  _id , { $set: {"xxx.c": data.c } );

是否可以在单一命令中完成?

1 个答案:

答案 0 :(得分:1)

您可以将两个$set字词组合到一个更新中来完成此操作:

db.myColl.update(_id, { $set: {"xxx.b": data.b, "xxx.c": data.c } });