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
- Create appropriate indexes
- Use projection
- Limit result sets
- Avoid $regex without index
- Monitor slow queries
Conclusion
Optimize MongoDB for better performance! π