(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — Создаёт новый запрос
$filter, ?array $queryOptions = null)Метод создаёт новый объект MongoDB\Driver\Query — неизменяемый объект значения, который представляет запрос к базе данных. После этого запрос готов к выполнению методом MongoDB\Driver\Manager::executeQuery().
filter (array|object)Замечание: СУБД MongoDB при оценке критериев запроса сравнивает типы и значения по внутренним » правилам сравнения BSON-типов, которые не совпадают с правилами сравнения и жонглирования типами в PHP. При сопоставлении специального BSON-типа в запросе требуется передать объект BSON-класса, который соответствует типу BSON-значения, поэтому для сопоставления с BSON-типом » ObjectId указывают объект класса MongoDB\BSON\ObjectId.
queryOptions
| Опция | Тип | Описание |
|---|---|---|
| allowDiskUse | bool | Разрешает БД MongoDB при обработке операции блочной сортировки хранить на диске временные файлы с данными, размер которых превышает 100-мегабайтный предел системной памяти. |
| allowPartialResults | bool |
Для запросов к шардированной коллекции вместо выдачи
ошибки возвращает из процесса mongos частичные результаты,
если отдельные шарды недоступны.
Драйвер откатится к считыванию устаревшей опции "partial",
если эту опцию не указали.
|
| awaitData | bool |
Опцию указывают совместно с опцией "tailable",
чтобы вместо возврата данных временно заблокировать операцию getMore для курсора,
если курсор в конце данных. По истечении времени ожидания запрос возвращается
в стандартном режиме.
|
| batchSize | int | Устанавливает количество документов для возврата в первом пакете. Значение по умолчанию равно 101. Размер пакета 0 означает, что курсор установится, но документы не вернутся в первом пакете. В версиях MongoDB до 3.2, в которых запросы работают по устаревшему проводному протоколу OP_QUERY, размер пакета со значением 1 закроет курсор независимо от количества совпадающих документов. |
| collation | array|object |
» Сопоставление
позволяет пользователям указывать специфичные для конкретного языка правила
для сравнения строк, такие как реакцию на регистр букв и надстрочные знаки.
Если задали сопоставление, то поле "locale" также обязательно.
Описание полей смотрите в разделе
» Сопоставление.
Если сопоставление не задали явно, но у коллекции определили сопоставление по умолчанию,
то будет выбрано оно. Если нет ни того ни того, то MongoDB будет использовать простое бинарное сравнение строк.
Эта опция доступна в MongoDB 3.4+ и, если будет использована для более старых версий, вызовет исключение во время исполнения.
|
| comment | mixed |
Добавляет произвольный комментарий, который помогает отслеживать операцию
через профилировщик базы данных, данные, которые выводит метод CurrentOp, и журналы.
Комментарий добавляют в виде допустимого для MongoDB 4.4+ BSON-типа.
Предыдущие версии сервера поддерживают только строковые значения.
Драйвер откатится к считыванию устаревшего модификатора "$comment",
если эту опцию не указали.
|
| exhaust | bool | Настраивает запрос на потоковую передачу данных клиенту на полную мощность в нескольких «дополнительных» пакетах при условии, что клиент прочитает все данные, которые запросил. Опция уменьшает задержку, когда извлекается много данных и известно, что требуется извлечь все данные. Примечание: клиенту требуется прочитать все данные или закрыть соединение. Опция не поддерживается командой find в MongoDB 3.2+ и заставит драйвер использовать устаревшую версию проводного протокола (то есть OP_QUERY). |
| explain | bool |
Со значением true курсор MongoDB\Driver\Cursor,
который вернёт команда или запрос, будет содержать один документ, который
описывает план запроса: процесс и индексы, которые БД использует, чтобы вернуть запрос.
Драйвер откатится к считыванию устаревшего модификатора "$explain",
если эту опцию не указали.
Команда find в БД MongoDB 3.2+ не поддерживает эту опцию, опцию учитывает только устаревшая
версия проводного протокола — с кодом операции OP_QUERY в заголовке сообщения.
В БД MongoDB 3.0+ вместо этой опции пользуются командой
» explain.
|
| hint | string|array|object |
Устанавливает спецификацию индекса. Значение опции указывают либо как название индекса в виде строки,
либо как шаблон ключа индекса. С этой опцией система запросов будет рассматривать
только планы запроса с подсказкой индекса.
Драйвер откатится к считыванию устаревшей опции "hint",
если эту опцию не указали.
|
| let | array|object |
Карта имён и значений параметров. Значения должны быть константами или закрытыми выражениями, которые не ссылаются на поля документа. К параметрам можно обращаться как к переменным в контексте агрегированного выражения (например, $$var).
Опция доступна в MongoDB 5.0+ и приведёт к исключению во время выполнения, если указана для более старой версии сервера.
|
| limit | int | Параметр устанавливает максимальное количество документов для возврата. По умолчанию ограничений нет, если опцию не указали. Значение 0 — то же, что отмена ограничения. |
| max | array|object |
Устанавливает эксклюзивную верхнюю границу для конкретного индекса.
Драйвер откатится к считыванию устаревшего модификатора "$max",
если эту опцию не указали.
|
| maxAwaitTimeMS | int |
Принимает положительное целое число, которое устанавливает ограничение времени в миллисекундах,
в течение которого серверу разрешается заблокировать операцию getMore при недоступности данных.
Опцию указывают только в сочетании с опциями
"tailable" и "awaitData".
|
| maxTimeMS | int |
Совокупный лимит времени в миллисекундах для операций
обработки на курсоре. БД MongoDB прерывает операцию в ближайшей
следующей точке прерывания.
Драйвер откатится к считыванию устаревшего модификатора "$maxTimeMS",
если эту опцию не указали.
|
| min | array|object |
Инклюзивная нижняя граница для конкретного индекса.
Драйвер откатится к считыванию устаревшего модификатора "$min",
если эту опцию не указали.
|
| noCursorTimeout | bool | Запрещает серверу синхронизировать незанятые курсоры после периода бездействия, который составляет 10 минут. |
| projection | array|object | » Спецификация проекции, которая помогает определить, какие поля включать в документы, которые возвращает БД. В проекцию включают поле __pclass, если при работе с функциями ODM требуется десериализовать документы в их исходный PHP-класс. Десериализация будет работать только с этим полем, а без него модуль по умолчанию вернёт объект класса stdClass. |
| readConcern | MongoDB\Driver\ReadConcern | Определяет уровень изоляции для операций чтения. По умолчанию модуль использует ограничения считывания из URI-идентификатора подключения к БД MongoDB. Эта опция доступна в MongoDB 3.2+ и выбросит исключение во время выполнения, если опцию указали для более старой версии сервера. |
| returnKey | bool |
Со значением true опция возвращает в результирующих документах только индексные ключи.
Значением по умолчанию равно false. Документы, которые вернёт БД, будут пустыми,
если для опции указали значение true, а команда find не использует индекс.
Драйвер откатится к считыванию устаревшего модификатора "$returnKey",
если эту опцию не указали.
|
| showRecordId | bool |
Определяет, возвращать ли идентификатор записи для каждого
документа. Со значением true опция добавляет поле "$recordId"
верхнего уровня к документам, которые возвращает БД.
Драйвер откатится к считыванию устаревшего модификатора "$showDiskLoc",
если эту опцию не указали.
|
| singleBatch | bool |
Определяет, закрывать ли курсор после первого пакета.
Значение по умолчанию равно false.
|
| skip | int | Определяет количество документов, которое требуется пропустить. Значение по умолчанию равно 0. |
| sort | array|object |
Спецификация сортировки для упорядочения результатов.
Драйвер откатится к считыванию устаревшего модификатора "$orderby",
если эту опцию не указали.
|
| tailable | bool | Возвращает хвостовой курсор для ограниченной коллекции. |
| Версия | Описание |
|---|---|
| PECL mongodb 2.0.0 |
Параметр "partial" удалили. Вместо него указывают
параметр "allowPartialResults".
Параметр "maxScan" удалили. Поддержку параметра
удалили в MongoDB 4.2.
Параметр "modifiers" удалили. Параметр указывали
для устаревших модификаторов запроса, которые устарели.
Параметр "oplogReplay" удалили. Параметр игнорировали
СУБД MongoDB 4.4 и новее.
Параметр "snapshot" удалили. Поддержку параметра
удалили в MongoDB 4.0.
Отрицательное значение в параметре "limit" больше
не интерпретируется как значение true для параметра "singleBatch". Одну
часть результатов получают путём объединения положительного значения
в параметре "limit"
с параметром "singleBatch".
|
| PECL-модуль mongodb 1.14.0 |
Добавили опцию "let". Опция
"comment" теперь принимает любой тип.
|
| PECL-модуль mongodb 1.8.0 |
Добавили опцию "allowDiskUse".
Опция "oplogReplay" устарела.
|
| PECL-модуль mongodb 1.5.0 |
Опции "maxScan" и "snapshot"
устарели.
|
| PECL-модуль mongodb 1.3.0 |
Добавили опцию "maxAwaitTimeMS".
|
| PECL-модуль mongodb 1.2.0 |
Добавили опции "allowPartialResults",
"collation", "comment",
"hint", "max",
"maxScan", "maxTimeMS",
"min", "returnKey",
"showRecordId" и "snapshot".
Опцию "partial" переименовали
в "allowPartialResults". В целях обратной совместимости
опция "partial" по-прежнему будет считываться,
если опцию "allowPartialResults" не указали.
Удалили устаревший параметр "secondaryOk".
Для запросов, которые работают по устаревшему проводному протоколу OP_QUERY,
драйвер по мере необходимости установит бит secondaryOk по правилам
» Спецификации выбора сервера.
|
| PECL-модуль mongodb 1.1.0 | Добавили опцию "readConcern". |
Пример #1 Пример использования метода MongoDB\Driver\Query::__construct()
<?php
/* Выбераем только документы автора "bjori" с количеством просмотров, которое равно или превышает 100 */
$filter = [
'author' => 'bjori',
'views' => [
'$gte' => 100,
],
];
$options = [
/* Возвращаем только следующие поля в соответствующих документах */
'projection' => [
'title' => 1,
'article' => 1,
],
/* Возвращаем документы в порядке убывания просмотров */
'sort' => [
'views' => -1
],
];
$query = new MongoDB\Driver\Query($filter, $options);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, ['readPreference' => $readPreference]);
foreach ($cursor as $document) {
var_dump($document);
}
?>