(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Выполняет запрос к базе данных
$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
Опция | Тип | Описание |
---|---|---|
readPreference | MongoDB\Driver\ReadPreference |
Предпочтение чтения, используемая для выбора сервера для выполнения операции. |
session | MongoDB\Driver\Session |
Сессия для связывания с операцией. |
Метод возвращает курсор MongoDB\Driver\Cursor, если выполнился успешно.
Версия | Описание |
---|---|
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, если запрос не завершится через секунду после начала выполнения на сервере.