$ pull from document in document

时间:2015-03-05 00:58:44

标签: javascript node.js mongodb mongodb-query

我正试图从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

1 个答案:

答案 0 :(得分:1)

$pull运算符本身充当查询文档,并且也被视为对阵数组的每个元素,因此不需要$elemMatch

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

你还需要施放你的"字符串"从请求参数到ObjectId