$从文档中的数组中提取

$pull from array in document

我正在尝试从 mongodb 文档中的数组中 $pull。

文档结构如下:

{
    "_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)

which returns writeresult: 1, 但图片从未被删除。

ps 我正在使用节点,因此 req.params.picid

不需要$pull operator acts as a query document in itself and is also considered against every element of the array so $elemMatch:

var update = { 
   "$pull": { "pictures": { "_id": new ObjectId(req.params.picid) } }
};

您还需要将 "string" 从请求参数转换为 ObjectId