Mongoose $ pull不从db中删除元素

时间:2015-12-18 14:36:50

标签: node.js mongodb mongoose

我正在尝试从数组中删除一个条目,并通过执行$ pull和$ push将其移动到同一集合中的另一个数组中。 $ push工作正常,但$ pull无法删除数组元素。

这是我的代码。任何帮助,将不胜感激。提前谢谢。

var delete_this = save.one;

X.findOne({
    "_id": new ObjectId(y)
}, function(err, doc){

    var z;
    for (var i = 0; i < doc.requests.length; i++){
        if (doc.requests[i].userId == delete_this){
            z = doc.requests[i];
            break;
        }
    }

    doc.requests.pull({ "userId": delete_this });
    doc.terminate.push(request);
    doc.save();
});

这是我要删除的数组中的实际对象。应该清理得更多。

"requests" : [ 
        {
            "userId" : "56705fa2e7cd4c13519e08e5",
            "userRating" : null,
            "userImage" : "56705fa2e7cd4c13519e08e5",
            "name" : "Sunil"
        }
    ],

1 个答案:

答案 0 :(得分:0)

我有类似的问题,这对我有用。我所要做的就是在ObjectIds数组上调用.remove,然后传入我想删除的id,这样就可以了。

doc.requests.remove(idToRemove);

您可以像这样更新代码并试用。

X.findOne({
    "_id": new ObjectId(y)
}, function(err, doc){
    //I'm not sure what z is doing....
    var z;
    for (var i = 0; i < doc.requests.length; i++){
        if (doc.requests[i].userId == delete_this){
            z = doc.requests[i];
            break;
        }
    }
    //this should be all you need
    doc.requests.remove(delete_this);
    doc.terminate.push(request);
    doc.save();
});