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

Ngu*_*inh 16 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)});
  });
Run Code Online (Sandbox Code Playgroud)

三个功能的区别?

rob*_*lep 38

简而言之:

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

findOneAndDelete()应该可以删除_id.

  • @HidaytRahman `deleteOne` (对于单个文档)或 `deleteMany` (对于多个文档) (2认同)