2013-04-25 71 views
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"} }); 

但这种情况正在返回所有组,而不仅仅是符合条件的人。

回答

3

这里是你必须做的“删除”成员阵列与特定的第一/姓氏的元素是什么:

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

$pull是运营商删除数组元素文件内。 $elemMatch是匹配具有您指定的所有属性的数组元素的一种方法。

+0

是的,我结束了发现$拉方法,并得到它的工作。我似乎只是更新通过_id更新而不是其他限定符。这是一个安全问题? – Steven 2013-04-25 07:40:27

+0

不,这可能是使用不正确的查询表达式的问题。如果您无法弄清楚,请将其作为新问题发布? – 2013-04-25 07:43:46

相关问题