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 $options = array() ) : 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.

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