我想从嵌入式数组中提取特定项目...假设以下mongo文档....
db.test.find()
{
id:1,
comments :
[
{ cid: 1 },
{ cid: 2 },
{ cid: 3 },
{ cid: 4 },
{ cid: 5 }
]
}
我想通过comments
从cid
数组中删除项目,而不是按位置删除。我已经尝试了所有这些,但它们似乎都不起作用。我尝试过使用点符号,但这似乎没有任何效果。我尝试了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}})
答案 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