PHP Conference Japan 2024

MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery执行数据库查询

描述

final public 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

options
选项 类型 描述
readPreference MongoDB\Driver\ReadPreference

用于选择操作服务器的读取偏好。

session MongoDB\Driver\Session

与操作关联的会话。

返回值

成功时返回 MongoDB\Driver\Cursor

错误/异常

变更日志

版本 描述
PECL mongodb 1.4.0 第三个参数现在是一个options数组。为了向后兼容,此参数仍然接受MongoDB\Driver\ReadPreference对象。

示例

示例 #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

添加备注

用户贡献笔记

此页面没有用户贡献的笔记。
To Top