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() 方法具有以下参数:

Parameter
类型
说明
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 级嵌套。解释超出限制的输出会被截断。

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

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

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

后退

游标