MongoDB\Driver\Query::__construct
(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — Создает новый запрос
Описание
$filter
, array $queryOptions
= ?
)Создает новый 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 string Комментарий для прикрепления к запросу, помогающий интерпретировать и отслеживать данные профиля запроса.
Возврат к устаревшему модификатору
"$comment"
, если он не указан.exhaust bool Потоковая передача данных на полную мощность в нескольких "дополнительных" пакетах при условии, что клиент полностью прочитает все запрашиваемые данные. Быстрее, когда вы извлекаете много данных и знаете, что хотите все это перенести. Примечание: клиент не имеет права не читать все данные, если он не закрывает соединение.
Эта опция не поддерживается командой find в MongoDB 3.2+ и заставит драйвер использовать устаревшую версию проводного протокола (то есть OP_QUERY).
explain bool Если
true
, возвращенный MongoDB\Driver\Cursor будет содержать один документ, который описывает процесс и индексы, используемые для возврата запроса.Возврат к устаревшему модификатору
"$explain"
, если он не указан.Эта опция не поддерживается командой find в MongoDB 3.2+ и будет учитываться только при использовании устаревшей версии проводного протокола (т.е. OP_QUERY). Команда » explain должна использоваться на MongoDB 3.0+.
hint string|array|object Индекс спецификации. Укажите либо имя индекса в виде строки, либо шаблон ключа индекса. Если указано, то система запросов будет рассматривать планы только с использованием хинтованного индекса.
Откат к устаревшей опции
"hint"
, если она не указана.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 » Спецификация проекции для определения полей, которые необходимо включить в возвращаемые документы.
Если вы используете функцию ODM для десериализации документов в качестве их исходного класса PHP, убедитесь, что вы включили поле __pclass в проекцию. Это необходимо для работы десериализации, и без нее драйвер вернет (по умолчанию) объект 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. slaveOk bool Разрешить запрос вторичных наборов реплик snapshot bool ВниманиеЭта опция устарела и не должна использоваться.
Запрещает курсору возвращать документ более одного раза из-за промежуточной операции записи.
Возврат к устаревшему модификатору
"$snapshot"
, если он не указан.sort array|object Спецификация сортировки для упорядочения результатов.
Возврат к устаревшему модификатору
"$orderby"
, если он не указан.tailable bool Возвращает настраиваемый курсор для ограниченной коллекции.
Ошибки
- При ошибке парсинга аргумента бросает исключение MongoDB\Driver\Exception\InvalidArgumentException.
Список изменений
Версия | Описание |
---|---|
PECL mongodb 1.8.0 |
Добавлен параметр
Параметр |
PECL mongodb 1.5.0 |
Параметры |
PECL mongodb 1.3.0 |
Добавлен параметр |
PECL mongodb 1.2.0 |
Добавлен параметр
Переименован параметр
Удален параметр |
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::RP_PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, $readPreference);
foreach($cursor as $document) {
var_dump($document);
}
?>
Смотрите также
- MongoDB\Driver\Manager::executeQuery() - Выполняет запрос к базе данных
- MongoDB\Driver\Cursor