0

嗨,我试图简单地使用猫鼬从集合中删除一个文档,但由于某种奇怪的原因,我无法让它工作。

这是代码:

 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 存储为 new ObjectId("5214f4050acb53fe31000004") 但我没有高兴地尝试过这个?

谢谢。

4

2 回答 2

1

如您所述,在 MongoDB 中,文档的“_id”字段属于 ObjectId 类型。这不等于字符串,所以运行查询

db.userevent.remove({ _id: "5214f4050acb53fe31000004"});

不会匹配任何东西,也不会删除任何东西。相反,您必须搜索 _id 字段是具有该值的 ObjectId 的文档:

db.userevents.remove({ _id: ObjectId("5214f4050acb53fe31000004")});

在 mongoose 中,您可以使用 findByIdAndRemove 命令删除具有特定 _id 的文档。此命令将 ObjectId 或 String 作为参数,因此

query = Userevent.findByIdAndRemove("5214f4050acb53fe31000004");

应该可以正常工作。

于 2013-09-17T17:55:31.040 回答
0

只需exec()在查询后添加。

它应该像这样工作:

await models.Userevent.findByIdAndDelete("5214f4050acb53fe31000004").exec()
于 2021-11-28T22:24:05.523 回答