更新Mongo中包含相同对象的多个文档?

时间:2013-04-25 00:16:14

标签: mongodb meteor

所以,我有多个mongo docs是“Groups”。在每个组中,我有一个“成员”数组的子对象。我正在尝试进行查询以从每个“组”中删除“成员”的所有实例?

这是我的Mongo文档结构

Group: {
  _id: whatever, 
  members: [
    {firstName: "stupid", lastName: "head"},
    {firstName: "stupid2", lastName: "head2"},
    {firstName: "stupid3", lastName: "head3"}
  ]
}

说我有多个这些“群组”。我想说“如果一个组包含'stupid2 head2',请从中删除'stupid2 head2'。”

我正在尝试使用..

查询包含某个成员的所有组
Groups.find({"members": {"firstName": "stupid2", "lastName": "head2"} });

但是这会返回所有组,而不仅仅是符合条件的组。

1 个答案:

答案 0 :(得分:3)

以下是使用特定名字/姓氏“删除”成员数组元素所需做的事情:

db.Groups.update( 
     { members : { $elemMatch : {
          firstName : "stupid", 
          lastName: "head"
     } } }, 
     { $pull : { members : {
          firstName : "stupid", 
          lastName: "head"
     } } }
);

$pull是从文档中的数组中删除元素的运算符。 $elemMatch是一种匹配具有您指定的所有属性的数组元素的方法。