(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — 执行数据库查询
$namespace, MongoDB\Driver\Query $query, 数组|MongoDB\Driver\ReadPreference|null $options = null): MongoDB\Driver\Cursor根据"readPreference"选项选择服务器,并在该服务器上执行查询。
"readPreference"选项和Query的"readConcern"选项的默认值将从活动事务(由"session"选项指示)推断,然后是连接URI。
namespace (字符串)完全限定的命名空间(例如 "databaseName.collectionName")。
query (MongoDB\Driver\Query)要执行的查询。
options
| 选项 | 类型 | 描述 |
|---|---|---|
| readPreference | MongoDB\Driver\ReadPreference |
用于选择操作服务器的读取偏好。 |
| session | MongoDB\Driver\Session |
与操作关联的会话。 |
成功时返回 MongoDB\Driver\Cursor。
示例 #1 MongoDB\Driver\Manager::executeQuery() 示例
<?php
$manager = new MongoDB\Driver\Manager("mongodb://:27017");
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);
$filter = ['x' => ['$gt' => 1]];
$options = [
'projection' => ['_id' => 0],
'sort' => ['x' => -1],
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>以上示例将输出
object(stdClass)#6 (1) {
["x"]=>
int(3)
}
object(stdClass)#7 (1) {
["x"]=>
int(2)
}
示例 #2 限制查询的执行时间
可以使用"maxTimeMS" MongoDB\Driver\Query选项来限制查询的执行时间。请注意,此时间限制在服务器端强制执行,并且不考虑网络延迟。有关更多信息,请参见MongoDB手册中的» 终止正在运行的操作。
<?php
$manager = new MongoDB\Driver\Manager('mongodb://:27017');
$filter = ['x' => ['$gt' => 1]];
$options = [
'maxTimeMS' => 1000,
];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);
foreach ($cursor as $document) {
var_dump($document);
}
?>如果查询在服务器上执行一秒钟后仍未完成,则会抛出MongoDB\Driver\Exception\ExecutionTimeoutException。