DEV Community

shruti jain
shruti jain

Posted on

1 2 1 1 1

Optimizing MongoDB Queries with `.executionStats`

As developers, we often focus on writing functional queries, but ensuring they run efficiently is just as important. MongoDB provides a powerful tool—.executionStats—that helps analyze query performance and optimize database operations. Let’s explore how it works and why it’s useful in day-to-day development.

What is .executionStats?

In MongoDB, .executionStats is a mode in the explain() method that provides in-depth insights into how a query executes. It helps you understand query performance, index usage, and potential optimizations.

How to Use .executionStats

To analyze a query’s performance, run:

 db.collection.find(query).explain("executionStats")
Enter fullscreen mode Exit fullscreen mode

For example, if you want to check the performance of a query fetching users older than 25:

 db.users.find({ age: { $gt: 25 } }).explain("executionStats")
Enter fullscreen mode Exit fullscreen mode

This will return a detailed JSON output containing various execution metrics.

Key Metrics in .executionStats

Here are some critical fields to look at:

  1. executionSuccess – Indicates whether the query executed successfully.
  2. nReturned – Number of documents returned by the query.
  3. executionTimeMillis – Total execution time (in milliseconds).
  4. totalKeysExamined – Number of index keys examined.
  5. totalDocsExamined – Number of documents scanned in the collection.
  6. executionStages – Details about how MongoDB executed the query.

Why is This Useful for Developers?

🔍 Identifying Slow Queries

If executionTimeMillis is high, the query might be inefficient. Identifying slow queries helps in improving performance, especially for large datasets.

📊 Index Optimization

  • If totalDocsExamined is much higher than nReturned, MongoDB is scanning too many documents.
  • If totalKeysExamined is high, an index might not be working effectively.
  • This helps in deciding whether to create, modify, or remove indexes.

🛠 Debugging Execution Plans

If a query isn’t using an index as expected, .executionStats can help diagnose why. This prevents full collection scans and speeds up response times.

🚀 Improving Scalability

Optimizing queries ensures they can handle large traffic loads without causing high CPU or memory usage, making your application more scalable.

🔄 Comparing Query Performance

By testing different queries and comparing their .executionStats, developers can determine the most efficient approach for retrieving data.

Example: Optimizing a Query

Let’s say you run the following query:

 db.orders.find({ status: "shipped" }).explain("executionStats")
Enter fullscreen mode Exit fullscreen mode

If the output shows:

{
  "nReturned": 10,
  "totalDocsExamined": 10000,
  "executionTimeMillis": 120
}
Enter fullscreen mode Exit fullscreen mode

This means MongoDB is scanning 10,000 documents to return just 10! The solution? Add an index:

 db.orders.createIndex({ status: 1 })
Enter fullscreen mode Exit fullscreen mode

After indexing, running .executionStats again might show:

{
  "nReturned": 10,
  "totalDocsExamined": 10,
  "executionTimeMillis": 5
}
Enter fullscreen mode Exit fullscreen mode

This massive improvement makes the database more responsive and efficient.

Conclusion

Using .executionStats regularly helps developers:
✅ Identify slow queries

✅ Optimize indexes

✅ Debug query execution plans

✅ Improve database scalability

✅ Ensure applications run smoothly even under high loads

Next time you write a MongoDB query, don’t just check if it works—check how well it works! 🚀


Do you have a query that needs optimization? Share it in the comments! 😃

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more