所以,我有多个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"} });
但是这会返回所有组,而不仅仅是符合条件的组。
答案 0 :(得分:3)
以下是使用特定名字/姓氏“删除”成员数组元素所需做的事情:
db.Groups.update(
{ members : { $elemMatch : {
firstName : "stupid",
lastName: "head"
} } },
{ $pull : { members : {
firstName : "stupid",
lastName: "head"
} } }
);
$pull是从文档中的数组中删除元素的运算符。 $elemMatch是一种匹配具有您指定的所有属性的数组元素的方法。