Deleting documents from MongoDB collections in Node.js is executed using deleteOne() to delete a single matching document or deleteMany() to remove all documents matching a query filter.
flowchart LR
A["Delete Filter: {_id: ObjectId('...')}"] --> B["deleteOne(filter)"]
B --> C["Locate & Remove Matching Document"]
C --> D["DeleteResult: { acknowledged: true, deletedCount: 1 }"]
import { MongoClient, ObjectId } from 'mongodb';
const uri = 'mongodb://127.0.0.1:27017';
const client = new MongoClient(uri);
async function executeDocumentDeletions() {
try {
await client.connect();
const db = client.db('kodersolution_no_sql');
const products = db.collection('products');
// 1. deleteOne by ObjectId
const targetId = new ObjectId('65c1f0000000000000000001');
const deleteOneResult = await products.deleteOne({ _id: targetId });
console.log(`DeleteOne Acknowledged: ${deleteOneResult.acknowledged} | Deleted Count: ${deleteOneResult.deletedCount}`);
// 2. deleteMany matching condition
const deleteManyFilter = { category: 'Discontinued' };
const deleteManyResult = await products.deleteMany(deleteManyFilter);
console.log(`DeleteMany Deleted Count: ${deleteManyResult.deletedCount}`);
} catch (err) {
console.error('MongoDB Delete Error:', err.message);
} finally {
await client.close();
}
}
executeDocumentDeletions();
ObjectId Instances for _id: When querying by _id, pass new ObjectId(idString) rather than a raw string, or queries will return zero matches.deleteMany({}) Unfiltered: Executing deleteMany({}) without a filter parameter deletes every document in the collection.deletedCount: Inspect result.deletedCount to verify how many documents were matched and removed.Why will deleteOne({ _id: '65c1f...' }) fail to match a document if _id was saved as a BSON ObjectId?
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With