我正在尝试从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
但我想删除的评论仍然存在