PHP 8.4.2 Released!

MongoDB\Driver\Query::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Query::__constructСоздаёт новый запрос

Описание

final public MongoDB\Driver\Query::__construct(array|object $filter, ?array $queryOptions = null)

Метод создаёт новый объект MongoDB\Driver\Query — неизменяемый объект значения, который представляет запрос к базе данных. После этого запрос готов к выполнению методом MongoDB\Driver\Manager::executeQuery().

Список параметров

filter (array|object)

» Предикат запроса. Пустой предикат совпадёт со всеми элементами коллекции.

Замечание: При вычислении критериев запроса MongoDB сравнивает типы и значения в соответствии с собственными » правилами сравнения типов BSON, отличных от правил сравнения и приведения типов PHP. Когда указан специальный тип BSON, критерия запроса должна соответствовать классу BSON (т.е. использовать MongoDB\BSON\ObjectId для выборке по » ObjectId).

queryOptions

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 — то же, что отмена ограничения.

Отрицательное значение метод интерпретирует как положительное ограничение с опцией "singleBatch" со значением true. Это поведение поддерживается в целях обратной совместимости, но рассматривается как устаревшее.

max array|object

Устанавливает эксклюзивную верхнюю границу для конкретного индекса.

Драйвер откатится к считыванию устаревшего модификатора "$max", если эту опцию не указали.

maxAwaitTimeMS int

Принимает положительное целое число, которое устанавливает ограничение времени в миллисекундах, в течение которого серверу разрешается заблокировать операцию getMore при недоступности данных. Опцию указывают только в сочетании с опциями "tailable" и "awaitData".

maxScan int
Внимание

Опция устарела, и лучше не включать её в запрос.

Принимает целое положительное число, которое устанавливает максимальное количество документов или индексных ключей для сканирования при выполнении запроса.

Драйвер откатится к считыванию устаревшего модификатора "$maxScan", если эту опцию не указали.

maxTimeMS int

Совокупный лимит времени в миллисекундах для операций обработки на курсоре. БД MongoDB прерывает операцию в ближайшей следующей точке прерывания.

Драйвер откатится к считыванию устаревшего модификатора "$maxTimeMS", если эту опцию не указали.

min array|object

Инклюзивная нижняя граница для конкретного индекса.

Драйвер откатится к считыванию устаревшего модификатора "$min", если эту опцию не указали.

modifiers array » Метаоператоры, которые изменяют вывод или поведение запроса. Эти операторы устарели, вместо них лучше пользоваться именованными опциями.
noCursorTimeout bool Запрещает серверу синхронизировать незанятые курсоры после периода бездействия, который составляет 10 минут.
oplogReplay bool

Опция для внутренних операций с наборами реплик. Опция oplogReplay будет работать, только если включить в фильтр следующее условие:

[ 'ts' => [ '$gte' => <timestamp> ] ]

Замечание: Опция устарела с версии 1.8.0.

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.
snapshot bool
Внимание

Опция устарела, и лучше не включать её в запрос.

Запрещает курсору возвращать документ больше одного раза из-за промежуточной операции записи.

Драйвер откатится к считыванию устаревшего модификатора "$snapshot", если эту опцию не указали.

sort array|object

Спецификация сортировки для упорядочения результатов.

Драйвер откатится к считыванию устаревшего модификатора "$orderby", если эту опцию не указали.

tailable bool Возвращает хвостовой курсор для ограниченной коллекции.

Ошибки

Список изменений

Версия Описание
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);

foreach (
$cursor as $document) {
var_dump($document);
}

?>

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top