explain() (Explain Execution Plan)

Last updated: 2026-10-09

explain() (Explain Execution Plan)

explain() reveals a query's execution plan: `db.users.find({ age: { $gt: 20 } }).explain('executionStats')`. The result shows index usage, scanned documents, and timing — the core toolkit for performance tuning. The argument can be 'queryPlanner' (default, plan only), 'executionStats' (actual execution stats), or 'allPlansExecution' (every candidate plan).

CategoryCursor
MongoDB Version1.0+
Example Languagemongosh (Shell)

📝 Syntax

db.<collection>.find(<filter>).explain(<verbosity>)

⚙️ Parameters

modeOptional. 'queryPlanner', 'executionStats', or 'allPlansExecution'.

Returns:Document with the execution plan and stats.

▶ Example

Run the commands below in your local mongosh (requires a running mongod):

// explain: check whether the age query uses an index
const plan = db.users.find({ age: { $gt: 20 } })
  .explain('executionStats')
print('Docs examined: ' + plan.executionStats.totalDocsExamined)

Output:

Docs examined: 1000

📌 Notes

📚 Related Tutorials

❓ FAQ

QHow do I tell whether a query uses an index?
AInspect winningPlan: IXSCAN means an index was used, COLLSCAN means a full collection scan.
QWhat are the differences among explain's three modes?
AqueryPlanner shows the plan only and is fastest; executionStats adds actual execution stats; allPlansExecution details every candidate plan.
QDoes explain actually run the query?
AIt does execute (except in queryPlanner mode) — stats come from a real run, but no documents are returned.
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏