问题
In express and mongodb I want delete document by id findOneAndDelete() Can not delete by _id, can only delete by field ! why ?
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)});
});
Difference of three functions?
回答1:
In short:
- findOneAndDelete() returns the deleted document after having deleted it (in case you need its contents after the delete operation);
- deleteOne() is used to delete a single document
- remove() is a deprecated function and has been replaced by
deleteOne()
(to delete a single document) anddeleteMany()
(to delete multiple documents)
findOneAndDelete()
should be able to delete on _id
.
来源:https://stackoverflow.com/questions/42715591/mongodb-difference-remove-vs-findoneanddelete-vs-deleteone