从Mongo中的嵌入数组中按值拉取项目

时间:2012-02-05 04:27:45

标签: arrays mongodb

我想从嵌入式数组中提取特定项目...假设以下mongo文档....

db.test.find()

{
  id:1,
  comments : 
   [
     { cid: 1 },
     { cid: 2 },
     { cid: 3 },
     { cid: 4 },
     { cid: 5 }
   ]
}

我想通过commentscid数组中删除项目,而不是按位置删除。我已经尝试了所有这些,但它们似乎都不起作用。我尝试过使用点符号,但这似乎没有任何效果。我尝试了How to Delete-nth element from array的最后一篇帖子建议,但没有运气......

db.test.update({ 'comments.cid' : 5}, {"$pull" :{"comments":{"cid":"3"}}}    )
db.test.update(  {id: 1}, {"$pull" : {"comments" : { "cid" : "3"}}},false,false)
db.test.update(  {id: 1}, {"$pull" :{"comments.cid" :3}})

3 个答案:

答案 0 :(得分:10)

这应该有效:

db.test.update(  {id: 1}, {$pull :{comments: {cid :3}}})

另外,在您的文档中,您有: id:1最后没有逗号,它应该是:

id:1, 

答案 1 :(得分:2)

这些也有效......

db.test.update({comments:{cid:4} }, 
                    {$pull:{comments:{cid:4}},  
                      $inc:{commentCount: -1}})

db.test.update({"comments.cid" : 17}, 
                     {$pull:{ comments:{cid: 17}}, 
                      $inc:{commentCount:-1}})

答案 2 :(得分:-2)

只是想修改答案,以便它可以从数组中删除多个对象。

SelectedSomething

这个答案已经更新,它也适用于mongoose