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