Docs 菜单

Docs 主页开发应用程序MongoDB Manual

cursor.explain()

在此页面上

  • 定义
  • 行为
  • 输出
  • 例子
cursor.explain(verbosity)

重要

mongosh 方法

本页介绍了 mongosh方法。这不是特定于语言的驱动程序(例如 Node.js)的文档。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

提供有关 db.collection.find() 方法查询计划的信息。

explain()方法采用以下形式:

db.collection.find().explain()

explain()方法具有以下参数:

范围
类型
说明
verbose
字符串

可选。指定解释输出的详细模式。该模式会影响explain()的行为并确定要返回的信息量。可能的模式有:"queryPlanner""executionStats""allPlansExecution"

默认模式为"queryPlanner"

为了与早期版本的cursor.explain()向后兼容,MongoDB 将true解释为"allPlansExecution" ,将false解释为"queryPlanner"

有关模式的更多信息,请参阅详细模式。

explain()方法返回包含查询计划和执行统计信息(可选)的文档。

注意

使用explain会忽略所有现有计划缓存条目,并阻止 MongoDB 查询规划器创建新的计划缓存条目。

cursor.explain()的行为和返回的信息量取决于verbosity模式。

默认情况下, cursor.explain()queryPlanner详细模式下运行。

MongoDB 运行查询优化器,为正在评估的操作选择获胜计划。 cursor.explain()返回被评估方法的queryPlanner信息。

MongoDB 运行查询优化器来选择获胜计划并执行获胜计划直至完成,并返回描述获胜计划执行情况的统计信息。

cursor.explain()返回被评估方法的queryPlannerexecutionStats信息。但是, executionStats不会提供被拒绝计划的查询执行信息。

MongoDB 运行查询优化器来选择优胜计划并执行该计划直至完成。在 "allPlansExecution" 模式下,MongoDB 返回描述优胜计划执行情况的统计信息以及在计划选择期间捕获的其他候选计划的统计信息。

cursor.explain()返回被评估方法的queryPlannerexecutionStats信息。 executionStats包括获胜计划已完成查询执行信息。

如果查询优化器考虑了多个计划,executionStats 信息则还包括在计划选择阶段为获胜和被拒计划收集的部分执行信息。

db.collection.explain().find()db.collection.find().explain()类似,但主要区别如下:

有关详细信息,请参阅 db.collection.explain()

cursor.explain() 操作可以返回以下信息:

  • explainVersion,输出格式版本(例如, "1" )。

  • command,其中详细说明了正在解释的命令。

  • queryPlanner ,其中详细说明了查询优化器选择的计划并列出了被拒绝的计划。

  • executionStats,其中详细说明了获胜计划和被拒绝计划的执行情况。

  • serverInfo,提供有关 MongoDB 实例的信息。

  • serverParameters,其中详细说明了内部参数。

详细模式(例如 queryPlannerexecutionStatsallPlansExecution )决定了结果是否包括 executionStats,以及 executionStats 是否包括计划选择期间捕获的数据。

解释输出会受到 BSON 文档的最大嵌套深度的限制,即 100 级嵌套。解释超出限制的输出会被截断。

有关输出的详细信息,请参阅解释结果

以下示例在cursor.explain() "executionStats" 详细模式下运行 ,以返回指定db.collection.find() 操作的查询计划和执行信息:

db.products.find(
{ quantity: { $gt: 50 }, category: "apparel" }
).explain("executionStats")
← cursor.count()