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

MongoDB\Collection::explain()

1.4版本新增。

MongoDB\Collection::explain()

解释给定的命令。

function explain(
MongoDB\Operation\Explainable $explainable,
array $options = []
): array|object
$explainable : MongoDB\Operation\Explainable
要解释的命令。
$options : array

指定所需选项的数组。

名称
类型
说明

comment

混合

使用户可以指定任意注释来帮助通过数据库分析器、currentOp 输出和日志来跟踪操作。

自 MongoDB 4.4 起此选项可用,如果为旧服务器版本指定,则会在执行时导致异常。

默认为已解释操作(如有)的comment 。

1.13版本新增。

readPreference

Read preference to use for the operation. Defaults to the collection's read preference.

typeMap

阵列

应用游标的类型映射,决定如何将BSON文档转换为PHP值。默认为集合的类型映射。

这将用于返回的命令结果文档。

详细程度

字符串

运行命令的详细程度。 有关详细信息,请参阅解释命令。

An array or object with the result document of the explain command. The return type will depend on the typeMap option.

MongoDB\Exception\UnsupportedException,如果所选服务器使用了选项但不支持选项(例如collation、readConcern、writeConcern)。

MongoDB\Exception\InvalidArgumentException 用于与参数或选项解析相关的错误。

MongoDB\ 驱动程序\Exception\RuntimeException 用于扩展级别的其他错误(例如连接错误)。

可解释的命令包括但不限于:

  • MongoDB\Operation\Aggregate

  • MongoDB\Operation\Count

  • MongoDB\Operation\DeleteMany

  • MongoDB\Operation\DeleteOne

  • MongoDB\Operation\Distinct

  • MongoDB\Operation\Find

  • MongoDB\Operation\FindOne

  • MongoDB\Operation\FindOneAndDelete

  • MongoDB\Operation\FindOneAndReplace

  • MongoDB\Operation\FindOneAndUpdate

  • MongoDB\Operation\UpdateMany

  • MongoDB\Operation\UpdateOne

此示例解释了计数命令。

<?php
$collection = (new MongoDB\Client)->test->restaurants;
$count = new MongoDB\Operation\Count(
$collection->getDatabaseName(),
$collection->getCollectionName(),
['cuisine' => 'Italian']
);
$result = $collection->explain($count);
var_dump($result);

而输出将类似如下所示:

object(MongoDB\Model\BSONDocument)#29 (1) {
["storage":"ArrayObject":private]=>
array(4) {
["queryPlanner"]=>
object(MongoDB\Model\BSONDocument)#21 (1) {
["storage":"ArrayObject":private]=>
array(6) {
["plannerVersion"]=>
int(1)
["namespace"]=>
string(16) "test.restaurants"
["indexFilterSet"]=>
bool(false)
["parsedQuery"]=>
object(MongoDB\Model\BSONDocument)#15 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["cuisine"]=>
object(MongoDB\Model\BSONDocument)#14 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["$eq"]=>
string(7) "Italian"
}
}
}
}
["winningPlan"]=>
object(MongoDB\Model\BSONDocument)#19 (1) {
["storage":"ArrayObject":private]=>
array(2) {
["stage"]=>
string(5) "COUNT"
["inputStage"]=>
object(MongoDB\Model\BSONDocument)#18 (1) {
["storage":"ArrayObject":private]=>
array(3) {
["stage"]=>
string(8) "COLLSCAN"
["filter"]=>
object(MongoDB\Model\BSONDocument)#17 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["cuisine"]=>
object(MongoDB\Model\BSONDocument)#16 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["$eq"]=>
string(7) "Italian"
}
}
}
}
["direction"]=>
string(7) "forward"
}
}
}
}
["rejectedPlans"]=>
object(MongoDB\Model\BSONArray)#20 (1) {
["storage":"ArrayObject":private]=>
array(0) {
}
}
}
}
["executionStats"]=>
object(MongoDB\Model\BSONDocument)#27 (1) {
["storage":"ArrayObject":private]=>
array(7) {
["executionSuccess"]=>
bool(true)
["nReturned"]=>
int(0)
["executionTimeMillis"]=>
int(24)
["totalKeysExamined"]=>
int(0)
["totalDocsExamined"]=>
int(25359)
["executionStages"]=>
object(MongoDB\Model\BSONDocument)#25 (1) {
["storage":"ArrayObject":private]=>
array(14) {
["stage"]=>
string(5) "COUNT"
["nReturned"]=>
int(0)
["executionTimeMillisEstimate"]=>
int(20)
["works"]=>
int(25361)
["advanced"]=>
int(0)
["needTime"]=>
int(25360)
["needYield"]=>
int(0)
["saveState"]=>
int(198)
["restoreState"]=>
int(198)
["isEOF"]=>
int(1)
["invalidates"]=>
int(0)
["nCounted"]=>
int(1069)
["nSkipped"]=>
int(0)
["inputStage"]=>
object(MongoDB\Model\BSONDocument)#24 (1) {
["storage":"ArrayObject":private]=>
array(14) {
["stage"]=>
string(8) "COLLSCAN"
["filter"]=>
object(MongoDB\Model\BSONDocument)#23 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["cuisine"]=>
object(MongoDB\Model\BSONDocument)#22 (1) {
["storage":"ArrayObject":private]=>
array(1) {
["$eq"]=>
string(7) "Italian"
}
}
}
}
["nReturned"]=>
int(1069)
["executionTimeMillisEstimate"]=>
int(20)
["works"]=>
int(25361)
["advanced"]=>
int(1069)
["needTime"]=>
int(24291)
["needYield"]=>
int(0)
["saveState"]=>
int(198)
["restoreState"]=>
int(198)
["isEOF"]=>
int(1)
["invalidates"]=>
int(0)
["direction"]=>
string(7) "forward"
["docsExamined"]=>
int(25359)
}
}
}
}
["allPlansExecution"]=>
object(MongoDB\Model\BSONArray)#26 (1) {
["storage":"ArrayObject":private]=>
array(0) {
}
}
}
}
["serverInfo"]=>
object(MongoDB\Model\BSONDocument)#28 (1) {
["storage":"ArrayObject":private]=>
array(4) {
["host"]=>
string(9) "localhost"
["port"]=>
int(27017)
["version"]=>
string(5) "3.6.1"
["gitVersion"]=>
string(40) "025d4f4fe61efd1fb6f0005be20cb45a004093d1"
}
}
["ok"]=>
float(1)
}
}
  • MongoDB 手册中的解释命令参考