Выполняет запрос к базе данных

# MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

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

### Описание

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

Метод выбирает сервер в соответствии с опцией `readPreference` и выполняет запрос на этом сервере.

Значения по умолчанию для опциии `"readPreference"` и Query-опции `"readConcern"` метод получит из активной транзакции, за которой следует URI-идентификатор соединения. Активную транзакцию обозначает опция `session`.

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

`namespace` (string)
  Полностью определённое имя (т. е. `"databaseName.collectionName"`).
`query` (MongoDB\Driver\Query)
  Запрос для выполнения.
`options`

  options
  Опция | Тип | Описание
  --- | --- | ---
  readPreference | MongoDB\Driver\ReadPreference | Предпочтение чтения, используемая для выбора сервера для выполнения операции.
  session | MongoDB\Driver\Session | Сессия для связывания с операцией.

### Возвращаемые значения

Метод возвращает курсор MongoDB\Driver\Cursor, если выполнился успешно.

### Ошибки

- При ошибке парсинга аргумента метод выбрасывает исключение MongoDB\Driver\Exception\InvalidArgumentException.
- При неудачном соединении с сервером (кроме ошибок аутентификации) метод выбрасывает исключение MongoDB\Driver\Exception\ConnectionException.
- При неудачной аутентификации метод выбрасывает исключение MongoDB\Driver\Exception\AuthenticationException.
- При других ошибках наподобие неправильных операторах запроса метод выбрасывает исключение MongoDB\Driver\Exception\RuntimeException.

### Список изменений

Версия | Описание
--- | ---
PECL-модуль mongodb 2.0.0 | Параметр `options` больше не принимает объекты MongoDB\Driver\ReadPreference.
PECL-модуль mongodb 1.21.0 | Передача объекта MongoDB\Driver\ReadPreference как опции параметра `options` устарела, а с версии 2.0 передачу объекта запретят.
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, если запрос не завершится через секунду после начала выполнения на сервере.

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

- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - Выполняет запрос к базе данных на сервере

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open