嗨,我试图简单地从使用猫鼬的集合中删除一个文档,但由于一些奇怪的原因,我无法让它工作。
代码如下:
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”),但我试过了却没有乐趣?
谢谢
只需在查询后添加exec()
。
它应该是这样工作的:
await models.Userevent.findByIdAndDelete("5214f4050acb53fe31000004").exec()
在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");
应该没问题。
问题内容: 是否可以选择使用猫鼬进行批量更新?所以基本上有一个数组,如果不存在则插入每个元素,如果存在则更新它?(我正在使用海关_ids) 当我确实使用 .insert时, MongoDB对于重复的密钥(应更新)返回错误E11000。插入多个新文档可以正常工作: 使用 .save 返回错误,该参数必须是单个文档: 这个答案表明没有这样的选择,但是它是针对C#的,并且已经使用了3年。所以我想知道是否
问题内容: 我正在使用Mongoose库通过node.js访问MongoDB 有没有办法 从文档中删除密钥 ?即不只是将值设置为null,而是将其删除? 问题答案: 在早期版本中,您需要删除node-mongodb-native驱动程序。每个模型都有一个收集对象,该对象包含node-mongodb- native提供的所有方法。因此,您可以执行以下操作: 从2.0版开始,您可以执行以下操作: 从2
问题内容: 我正在尝试使用Mongoose将AngularJS与MongoDB连接。我想传递控制器要使用的模型,所以我可以$ scope到数据。我不确定是否必须设置Angular Service,如果可以,您是否可以指出正确的方向。谢谢。 概述: 模型: 控制器: 问题答案: 您将需要一个临时步骤。直接从Angular转到Mongo是行不通的。如果您想要Mongo的通用REST接口,可以使用Ang
目标 无明确目标 知识点 了解 mongodb (http://www.mongodb.org/ ) 学习 mongoose 的使用 (http://mongoosejs.com/ ) 课程内容 mongodb mongodb 这个名词相信大家不会陌生吧。有段时间 nosql 的概念炒得特别火,其中 hbase redis mongodb couchdb 之类的名词都相继进入了大众的视野。 hba
假设我在Mongoose模式上有这个数组属性(“articles”): 我如何使用 $addToSethttps://docs.mongodb.org/manual/reference/operator/update/addToSet/ 要通过检查hashtag的值来添加到此数组,以查看它是否唯一? 例如,如果我想将以下对象添加到上述数组中,我希望Mongo将其作为副本“拒绝”: 因为hashta
问题内容: 说我在猫鼬模式上有这个数组属性(“文章”): 我该怎么用 $ addToSet https://docs.mongodb.org/manual/reference/operator/update/addToSet/ 通过检查主题标签的值以查看其是否唯一来添加到此数组? 例如,如果我要将以下对象添加到上述数组中,则希望Mongo将其“重复”删除: 因为hashtag = foo已经被使用