MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQueryВыполняет запрос к базе данных

Описание

final public MongoDB\Driver\Manager::executeQuery(string $namespace, MongoDB\Driver\Query $query, array|MongoDB\Driver\ReadPreference|null $options = null): MongoDB\Driver\Cursor

Выбирает сервер в соответствии с опцией "readPreference" и выполняет запрос на этом сервере. По умолчанию будет использоваться предпочтение чтения из URI URI подключения MongoDB.

Список параметров

namespace (string)

Полностью определённое имя (т.е. "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://localhost: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://localhost: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.

Смотрите также