对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

游标()(mongosh方法)

cursor.explain(verbosity)

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是 特定于语言的驱动程序(例如 Node.js)的文档。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

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

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

db.collection.find().explain()

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

Parameter
必要性
类型
说明

verbose

Optional

字符串

确定要包含在解释输出中的信息量。 可能的详细模式有:

  • allPlansExecution

  • executionStats

  • queryPlanner (默认值)

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

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

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

注意

cursor.explain() 默认为 queryPlanner,与默认为 allPlansExecution的 explain 命令不同。

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。

要使用 explain,您必须有权运行根本的命令。

注意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • queryShapeHash,从MongoDB 8.0 开始,是一个十六进制 string,具有查询结构的哈希值。有关详情,请参阅查询结构、查询结构哈希和 explain.queryShapeHash。

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

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

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

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

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

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

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

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

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