即使回调错误为“null”,Mongodb $ pull运算符也不会删除元素

时间:2015-08-27 15:26:16

标签: javascript node.js mongodb

我正在尝试从Node.js中的MongoDB集合中删除数组元素。问题是,尽管回调返回1并且其错误为null,这表明操作成功,对吧?但是当我检查数据库时,我想删除的元素仍然存在。如果我在Mongo Shell中执行相同的命令就可以了。我真的不明白我做错了什么。有没有人有想法?

我在集合中的对象:

{
    "_id" : ObjectId("55dc82bd0ab9de6c20bc2eb9"),
    "title" : "post title",
    "content": "post content",
    "time" : 1440514750,
    "comments" : [
        {
            "time" : 1440683176,
            "username" : "arne",
            "content" : "This is my comment"
        },
        {
            "time" : 1440683198,
            "username" : "jack",
            "content" : "This is another comment"
        }
    ]
}

mongo shell中的工作命令(成功从集合中删除注释):

> db.posts.update({_id: ObjectId("55dc82bd0ab9de6c20bc2eb9")}, {$pull: {comments: {time: 1440683198}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

在node.js中不起作用:

req.db.collection('posts').update({_id: new mongoID(postId)}, {$pull: {comments: {time: commentTime}}}, function(err, result) {
    console.log('result', result);
    console.log('err', err);
    res.redirect('/blog/' + postId);
});

输出:

object 1
err null

但我想删除的评论仍然存在

0 个答案:

没有答案