MongoDB\Database::command()
定义
MongoDB\Database::command()
对数据库执行命令。 这通常用于执行库中没有相应辅助方法的命令。
function command( array|object $command, array $options = [] ): MongoDB\Driver\Cursor
参数
$command
: array|object- 数据库命令文档。
$options
: array指定所需选项的数组。
名称类型说明readPreference
读取要用于操作的偏好。 默认为数据库的读取偏好。
会话
与操作相关联的客户端会话。
1.3 版本中的新增功能。
typeMap
阵列
类型映射 应用于游标,决定如何将 BSON 文档转换为 PHP 值。默认为数据库的类型映射。
Return Values
A MongoDB\ 驱动程序\Cursor 对象。
错误/异常
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
例子
大多数数据库命令返回单个结果文档,可以通过将返回的游标转换为大量并访问其第一个元素来获得该结果文档。 以下示例执行网络探测(ping)命令并打印其结果文档:
$database = (new MongoDB\Client)->test; $cursor = $database->command(['ping' => 1]); var_dump($cursor->toArray()[0]);
输出类似如下所示:
object(MongoDB\Model\BSONDocument)#11 (1) { ["storage":"ArrayObject":private]=> array(1) { ["ok"]=> float(1) } }
某些数据库命令会返回包含多个结果的游标。 以下示例执行listCollections ,返回一个游标,其中包含test
数据库中每个集合的结果文档。 请注意,此示例是说明性的;应用程序在实践中通常会使用MongoDB\Database::listCollections()
。
$database = (new MongoDB\Client)->test; $cursor = $database->command(['listCollections' => 1]); var_dump($cursor->toArray());
输出类似如下所示:
array(3) { [0]=> object(MongoDB\Model\BSONDocument)#11 (1) { ["storage":"ArrayObject":private]=> array(2) { ["name"]=> string(11) "restaurants" ["options"]=> object(MongoDB\Model\BSONDocument)#3 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } } [1]=> object(MongoDB\Model\BSONDocument)#13 (1) { ["storage":"ArrayObject":private]=> array(2) { ["name"]=> string(5) "users" ["options"]=> object(MongoDB\Model\BSONDocument)#12 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } } [2]=> object(MongoDB\Model\BSONDocument)#15 (1) { ["storage":"ArrayObject":private]=> array(2) { ["name"]=> string(6) "restos" ["options"]=> object(MongoDB\Model\BSONDocument)#14 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } } }