我尝试了以下代码(其他类似功能也是如此),它起初确实起作用,但后来却不起作用。有一个具有匹配ID的项目,它没有给出任何错误并可以执行,但是该文档并未从MongoDB中删除
CompanyModel.findOneAndDelete({ id: data.id }, function (err, doc) {
if (err) {
console.error(err);
}
});
答案 0 :(得分:0)
您需要在过滤器中提供_id:data.id。 例如。
CompanyModel.findOneAndDelete({ _id: data.id }, function (err, doc) {
//code here
}
答案 1 :(得分:0)
mongo id为_id
,比较值应转换为ObjectId:
// import { ObjectId } from 'bson';
{_id: new ObjectId(id)}
如果您不想使用_id
,则必须确保id字段存在并且包含值(具有正确的类型)。否则请求似乎很好。
答案 2 :(得分:0)
发布问题后不久,我发现了它。问题是,我正在运行一个测试,其中在socket-io客户端中一个接一个地创建文档并删除文档,但是我使用过“ process.nextTick”功能将模型保存在服务器端,而不是用于删除。因此删除是在创建之前发生的。我希望这种情况会产生错误,但是如果找不到项目,它不会给出任何错误。
我很困惑,因为我发现不再支持Model.deleteOne Mongoose.js - TypeError: Model.deleteOne is not a function