0

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

这是我的 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"} });

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

4

1 回答 1

3

以下是“删除”具有特定名字/姓氏的成员数组元素所要做的:

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

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

于 2013-04-25T04:14:59.780 回答