mongodb差异remove()vs findOneAndDelete()vs deleteOne()

时间:2017-03-10 10:04:53

标签: mongodb express

在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)});
  });

三种功能的区别?

1 个答案:

答案 0 :(得分:29)

简而言之:

  • findOneAndDelete()在删除文件后返回已删除的文件(如果您在删除操作后需要其内容);
  • deleteOne()用于删除单个文档
  • remove()是已弃用的功能,已被deleteOne()(删除单个文档)和deleteMany()(删除多个文档)替换

findOneAndDelete()应该能够在_id上删除。