(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Выполняет запрос к базе данных
$namespace
, MongoDB\Driver\Query $query
, array|MongoDB\Driver\ReadPreference|null $options
= null
): MongoDB\Driver\Cursor
Метод выбирает сервер в соответствии с опцией readPreference
и выполняет запрос на этом сервере.
Значения по умолчанию для параметра "readPreference"
и параметра
"readConcern"
Query-запроса будут выведены из активной
транзакции (обозначенной параметром session
), за которой следует
URI-идентификатор соединения.
namespace
(string)
Полностью определённое имя (т.е. "databaseName.collectionName"
).
query
(MongoDB\Driver\Query)Запрос для выполнения.
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.