FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
上面的方法似乎不管用。记录还在那里。
有人能修好吗?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
上面的方法似乎不管用。记录还在那里。
有人能修好吗?
当前回答
对于删除文档,我更喜欢使用Model。(回调)remove(条件)
请参考API文件删除:-
http://mongoosejs.com/docs/api.html#model_Model.remove
对于这种情况,代码将是:-
FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})
如果你想在不等待MongoDB响应的情况下删除文档,不传递回调,那么你需要对返回的查询调用exec
var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
其他回答
mongodb .model.find()返回一个查询对象,该对象也有一个remove()函数。
如果你只想删除一个唯一的文档,你也可以使用mongoose.model.findOne()。
否则,您也可以遵循传统的方法,即首先检索文档,然后删除。
yourModelObj.findById(id, function (err, doc) {
if (err) {
// handle error
}
doc.remove(callback); //Removes the document
})
以下是在模型对象上您可以执行以下任何操作来删除文档的方法:
yourModelObj.findOneAndRemove(conditions, options, callback)
yourModelObj。findByIdAndRemove(id, options, callback)
yourModelObj。删除(条件,回调);
var query = Comment.remove({ _id: id });
query.exec();
你可以随时使用Mongoose内置函数:
var id = req.params.friendId; //here you pass the id
FBFriendModel
.findByIdAndRemove(id)
.exec()
.then(function(doc) {
return doc;
}).catch(function(error) {
throw error;
});
这对我来说是3.8.1版本最好的:
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
它只需要一个DB调用。 如果在搜索和删除之前不执行任何删除操作,则使用此方法。
Docs是一个文档数组。所以它没有一个mongoosemmodel .remove()方法。
可以分别迭代和删除数组中的每个文档。
或者—因为看起来您是通过(可能)唯一的id查找文档—使用findOne而不是find。
我更喜欢承诺符号,在这里你需要。
Model.findOneAndRemove({_id:id})
.then( doc => .... )