您好我想尝试使用mongoose从集合中删除文档,但由于某些奇怪的原因我无法让它工作。
以下是代码:
function deleteUserevent()
{console.log('in delete User Event');
models.Userevent.remove({ _id: "5214f4050acb53fe31000004"}, function(err) {
if (!err){
console.log('deleted user event!');
}
else {
console.log('error');
}
});
}
任何人都可以帮我解决语法问题吗?我知道_id存储为新的ObjectId(“5214f4050acb53fe31000004”),但是我试过这个并不高兴吗?
感谢。
答案 0 :(得分:1)
在MongoDB中,文档的“_id”字段的类型为ObjectId,如您所述。这不等于String,因此运行查询
db.userevent.remove({ _id: "5214f4050acb53fe31000004"});
不会匹配任何内容,也不会删除任何内容。相反,您必须搜索_id字段是具有该值的ObjectId的文档:
db.userevents.remove({ _id: ObjectId("5214f4050acb53fe31000004")});
在mongoose中,您可以使用findByIdAndRemove命令删除具有特定_id的文档。此命令将ObjectId或String作为参数,因此
query = Userevent.findByIdAndRemove("5214f4050acb53fe31000004");
应该可以正常工作。