mongodb:删除包含文档&的where子句的子文档。子文档

时间:2013-04-05 14:47:36

标签: mongodb

这是我的收藏(工人):

"type" : "Manager",
"employees" : [{
    "name" : "bob"
    "id" : 101
    },{
    "name" : "phil"
    "id" : 102
    },{
    "name" : "bob"
    "id" : 103
    }]

首先:这是不是数组所以$ pullAll将不起作用或其他数组命令。我想要做的就是:(1)在所有子文档 类型管理器中搜索集合中的id 101。 (2)如果101存在于“Manager”子文档中,我想删除项目103.

我已经在这个问题上倾注了两天的互联网,无法弄明白。

我已尝试过这个(以及许多其他变体):

db.workers.update( {"type":"Manager","employees.id":101},{$pull : {"employees.id" : {"id" : 103}}},false,true)

1 个答案:

答案 0 :(得分:4)

您的$pull对象的语法已关闭。试试这个:

db.workers.update({"type":"Manager","employees.id":101},
    {$pull : {"employees" : {"id" : 103}}},false,true)

确认他们已被删除:

db.workers.find({
    type: "Manager", 
    $and: [{'employees.id': 101}, {'employees.id': 103}]
})