(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://127.0.0.1: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://127.0.0.1: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。