Optimizing MongoDB queries is essential for performance. Here’s how.

Indexing

Create Indexes

// Single field index
db.users.createIndex({ email: 1 });

// Compound index
db.users.createIndex({ status: 1, createdAt: -1 });

// Text index
db.posts.createIndex({ title: "text", content: "text" });

Explain Queries

db.users.find({ email: "[email protected]" }).explain("executionStats");

Query Optimization

Use Projection

// Bad: Fetches all fields
db.users.find({ status: "active" });

// Good: Only needed fields
db.users.find(
    { status: "active" },
    { name: 1, email: 1, _id: 0 }
);

Limit Results

db.users.find({ status: "active" })
    .limit(10)
    .sort({ createdAt: -1 });

Best Practices

  1. Create appropriate indexes
  2. Use projection
  3. Limit result sets
  4. Avoid $regex without index
  5. Monitor slow queries

Conclusion

Optimize MongoDB for better performance! πŸƒ