我正试图从mongodb文档中的数组中拉出来。
该文件具有以下结构:
{
"_id" : ObjectId("54ee62ef688b41ff072b934b"),
"pictures" : [
{
"url" : "...",
"_id" : ObjectId("54ee6303688b41ff072b934d")
},
{
"url" : "...",
"_id" : ObjectId("54ee6304688b41ff072b934e")
},
{
"url" : "",
"_id" : ObjectId("54ee6304688b41ff072b934f")
}
]
}
我尝试了更新对象
var update = { $pull: { pictures: {$elemMatch: {_id:req.params.picid } } } }
db.activity.update({_id: new ObjectId(req.params.id)}, update)
返回writeresult:1,但图片永远不会删除。
ps我正在使用node,hense req.params.picid
答案 0 :(得分:1)
$pull
运算符本身充当查询文档,并且也被视为对阵数组的每个元素,因此不需要$elemMatch
:
var update = {
"$pull": { "pictures": { "_id": new ObjectId(req.params.picid) } }
};
你还需要施放你的"字符串"从请求参数到ObjectId
。