(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeQuery — Выполняет запрос к базе данных
$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
Опция | Тип | Описание |
---|---|---|
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.