0
0
MongodbHow-ToBeginner · 3 min read

How to Delete Document Using Mongoose: Syntax and Examples

To delete a document using mongoose, use methods like Model.deleteOne(), Model.deleteMany(), or Model.findByIdAndDelete(). These methods remove documents matching the given filter or ID from the database.
📐

Syntax

Here are common methods to delete documents in Mongoose:

  • Model.deleteOne(filter): Deletes the first document matching the filter.
  • Model.deleteMany(filter): Deletes all documents matching the filter.
  • Model.findByIdAndDelete(id): Deletes a document by its unique ID.

Each method returns a promise that resolves with the deletion result.

javascript
Model.deleteOne({ field: value })
Model.deleteMany({ field: value })
Model.findByIdAndDelete(id)
💻

Example

This example shows how to delete a user document by ID using findByIdAndDelete and how to delete multiple users with a condition using deleteMany.

javascript
const mongoose = require('mongoose');

// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/testdb', { useNewUrlParser: true, useUnifiedTopology: true });

// Define a simple User schema
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

const User = mongoose.model('User', userSchema);

async function run() {
  // Create sample users
  await User.create([{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 35 }]);

  // Delete one user by ID
  const userToDelete = await User.findOne({ name: 'Alice' });
  const deletedUser = await User.findByIdAndDelete(userToDelete._id);
  console.log('Deleted user:', deletedUser);

  // Delete all users older than 30
  const deleteResult = await User.deleteMany({ age: { $gt: 30 } });
  console.log('Number of users deleted:', deleteResult.deletedCount);

  // Show remaining users
  const remainingUsers = await User.find();
  console.log('Remaining users:', remainingUsers);

  mongoose.connection.close();
}

run();
Output
Deleted user: { _id: ObjectId("..."), name: 'Alice', age: 25, __v: 0 } Number of users deleted: 1 Remaining users: [ { _id: ObjectId("..."), name: 'Bob', age: 30, __v: 0 } ]
⚠️

Common Pitfalls

Common mistakes when deleting documents with Mongoose include:

  • Using deleteOne or deleteMany without a proper filter, which can delete unintended documents.
  • Not awaiting the promise, causing code to continue before deletion completes.
  • Confusing findByIdAndDelete with findOneAndDelete — the former requires an ID, the latter a filter object.
javascript
/* Wrong: Missing filter deletes nothing or causes error */
await User.deleteOne(); // Incorrect usage

/* Right: Provide filter to delete specific document */
await User.deleteOne({ name: 'Bob' });
📊

Quick Reference

MethodDescriptionInputReturns
deleteOne(filter)Deletes first document matching filterFilter objectPromise with deletion info
deleteMany(filter)Deletes all documents matching filterFilter objectPromise with deletion info
findByIdAndDelete(id)Deletes document by its IDDocument IDPromise with deleted document
findOneAndDelete(filter)Deletes first document matching filter and returns itFilter objectPromise with deleted document

Key Takeaways

Use Model.deleteOne(), deleteMany(), or findByIdAndDelete() to remove documents in Mongoose.
Always provide a filter or ID to avoid deleting unintended documents.
Await the deletion promise to ensure the operation completes before proceeding.
findByIdAndDelete requires a document ID, while deleteOne and deleteMany use filter objects.
Check the deletion result to confirm how many documents were removed.