无法使用猫鼬在mongodb上删除?

时间:2013-08-22 02:57:24

标签: mongodb mongoose

您好我想尝试使用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”),但是我试过这个并不高兴吗?

感谢。

1 个答案:

答案 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");

应该可以正常工作。