explain

在本页面

Definition

explain命令提供有关以下命令执行的信息:countdistinctgroupfindfindAndModifydeleteupdate

尽管 MongoDB 提供了explain命令,但是运行explain的首选方法是使用db.collection.explain()cursor.explain()帮助器。

explain命令具有以下语法:

{
   explain: <command>,
   verbosity: <string>
}

该命令包含以下字段:

Field Type Description
explain document 一个文档,指定要为其返回执行信息的命令。有关特定命令文档的详细信息,请参见countdistinctgroupfindfindAndModifydeleteupdate
verbosity string 可选的。一个字符串,指定运行explain的模式。该模式影响explain的行为并确定要返回的信息量。


可能的模式是:"queryPlanner""executionStats""allPlansExecution"。有关这些模式的更多信息,请参见explain behavior
默认情况下,explain"allPlansExecution"模式运行。

Behavior

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

queryPlanner Mode

MongoDB 运行query optimizer来为评估中的操作选择胜出计划。 explain返回评估的<command>queryPlanner信息。

executionStats Mode

MongoDB 运行query optimizer选择中奖计划,执行中奖计划直至完成,并返回描述中奖计划执行情况的统计信息。

对于写操作,explain返回有关将要执行的更新或删除操作的信息,但不会*将修改应用于数据库。

explain返回评估的<command>queryPlannerexecutionStats信息。但是,executionStats不提供被拒绝计划的查询执行信息。

allPlansExecution Mode

默认情况下,explain"allPlansExecution"详细模式运行。

MongoDB 运行query optimizer选择中奖计划,并执行中奖计划直至完成。在"allPlansExecution"模式下,MongoDB 返回描述获胜计划执行情况的统计信息以及在plan selection期间捕获的其他候选计划的统计信息。

对于写操作,explain返回有关将要执行的更新或删除操作的信息,但不会*将修改应用于数据库。

explain返回评估的<command>queryPlannerexecutionStats信息。 executionStats包括中奖计划已完成查询执行信息。

如果查询优化器考虑了多个计划,则executionStats信息还包括在计划选择阶段期间针对获胜和被拒绝的候选计划捕获的* partial *执行信息。

Examples

queryPlanner Mode

以下explain命令以"queryPlanner"详细模式运行,以返回count命令的查询计划信息:

db.runCommand(
   {
     explain: { count: "products", query: { quantity: { $gt: 50 } } },
     verbosity: "queryPlanner"
   }
)

executionStats Mode

以下explain操作以"executionStats"详细模式运行,以返回count命令的查询计划和执行信息:

db.runCommand(
   {
      explain: { count: "products", query: { quantity: { $gt: 50 } } },
      verbosity: "executionStats"
   }
)

allPlansExecution Mode

默认情况下,explain"allPlansExecution"详细模式运行。以下explain命令针对update命令的所有已考虑计划返回queryPlannerexecutionStats

Note

该 explain 的执行将不会修改数据,但会运行更新操作的查询谓词。对于候选计划,MongoDB 返回在计划选择阶段期间捕获的执行信息。

db.runCommand(
   {
     explain: {
        update: "products",
        updates: [
           {
               q: { quantity: 1057, category: "apparel" },
               u: { $set: { reorder: true } }
           }
        ]
     }
   }
)

Output

explain操作可以返回有关以下内容的信息:

详细模式(即queryPlannerexecutionStatsallPlansExecution)确定结果是否包括executionStats以及executionStats是否包括在plan selection期间捕获的数据。

有关输出的详细信息,请参见Explain Results

首页