在express和mongodb中我想通过id删除文件 findOneAndDelete()无法通过_id删除,只能按字段删除!为什么?
db.collection('quotes').findOneAndDelete({name: req.body.name}, (err, result) => {
if (err) return res.send(500, err)
})
var ObjectId = require('mongodb').ObjectId;
var collection = db.collection('quotes');
collection.remove({_id: new ObjectId(req.body.id)}, function(err, result) {
if (err) {
console.log(err);
} else {
res.send('A darth vadar quote got deleted')
}
});
var mongodb = require('mongodb');
db.collection('quotes', function(err, collection) {
collection.deleteOne({_id: new mongodb.ObjectID(req.body.id)});
});
三种功能的区别?
答案 0 :(得分:29)
简而言之:
findOneAndDelete()
在删除文件后返回已删除的文件(如果您在删除操作后需要其内容); deleteOne()
用于删除单个文档remove()
是已弃用的功能,已被deleteOne()
(删除单个文档)和deleteMany()
(删除多个文档)替换 findOneAndDelete()
应该能够在_id
上删除。