What is the difference between deleteOne() and findOneAndDelete() operation in MongoDB?

Both deleteOne() and findOneAndDelete() remove a single document from a MongoDB collection, but they differ in their return values. The deleteOne() method returns only the deletion status, while findOneAndDelete() returns the actual deleted document.

Syntax

// deleteOne() - returns deletion status
db.collection.deleteOne(filter, options)

// findOneAndDelete() - returns deleted document
db.collection.findOneAndDelete(filter, options)

Sample Data

db.demo448.insertMany([
    {"Name": "Chris", "Age": 21},
    {"Name": "David", "Age": 23},
    {"Name": "Bob", "Age": 22}
]);
{
    "acknowledged": true,
    "insertedIds": [
        ObjectId("5e7a291cbbc41e36cc3caeca"),
        ObjectId("5e7a2926bbc41e36cc3caecb"),
        ObjectId("5e7a2930bbc41e36cc3caecc")
    ]
}
db.demo448.find();
{ "_id": ObjectId("5e7a291cbbc41e36cc3caeca"), "Name": "Chris", "Age": 21 }
{ "_id": ObjectId("5e7a2926bbc41e36cc3caecb"), "Name": "David", "Age": 23 }
{ "_id": ObjectId("5e7a2930bbc41e36cc3caecc"), "Name": "Bob", "Age": 22 }

Example 1: Using deleteOne()

db.demo448.deleteOne({_id: ObjectId("5e7a2926bbc41e36cc3caecb")});
{ "acknowledged": true, "deletedCount": 1 }

Example 2: Using findOneAndDelete()

db.demo448.findOneAndDelete({"_id": ObjectId("5e7a2930bbc41e36cc3caecc")});
{ "_id": ObjectId("5e7a2930bbc41e36cc3caecc"), "Name": "Bob", "Age": 22 }

Key Differences

Method Return Value Use Case
deleteOne() Deletion status (acknowledged, deletedCount) When you only need confirmation of deletion
findOneAndDelete() The deleted document itself When you need the deleted document data

Conclusion

Use deleteOne() for simple deletions when you only need status confirmation. Choose findOneAndDelete() when you need to retrieve the deleted document data for logging, auditing, or further processing.

Updated on: 2026-03-15T03:00:52+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements