Содержание
Создание простого запроса на выборку
Если вам нужно выбрать определенные данные из одного или нескольких источников, можно воспользоваться запросом на выборку. Запрос на выборку позволяет получить только необходимые сведения, а также помогает объединять информацию из нескольких источников. В качестве источников данных для запросов на выборку можно использовать таблицы и другие такие же запросы. В этом разделе вкратце рассматриваются запросы на выборку и предлагаются пошаговые инструкции по их созданию с помощью Мастера запросов либо в Конструктор.
Если вы хотите узнать больше о принципах работы запросов на примере базы данных Northwind, ознакомьтесь со статьей Общие сведения о запросах.
В этой статье
-
Overview -
Создание запроса SELECT с помощью мастера запросов -
Создание запроса в режиме конструктора
Общие сведения
Когда возникает потребность в каких-то данных, редко бывает необходимо все содержимое одной таблицы. Например, если вам нужна информация из таблицы контактов, как правило, речь идет о конкретной записи или только о номере телефона. Иногда бывает необходимо объединить данные сразу из нескольких таблиц, например совместить информацию о клиентах со сведениями о заказчиках. Для выбора необходимых данных используются запросы на выборку.
Запрос на выборки — это объект базы данных, в который в Режим таблицы. Запрос не хранит данные, а отображает данные, хранимые в таблицах. Запрос может показывать данные из одной или нескольких таблиц, из других запросов или из их сочетания.
Преимущества запросов
Запрос позволяет выполнять перечисленные ниже задачи.
-
Просматривать значения только из полей, которые вас интересуют. При открытии таблицы отображаются все поля. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Примечание: Запрос только возвращает данные, но не сохраняет их. При сохранении запроса вы не сохраняете копию соответствующих данных.
-
Объединять данные из нескольких источников. В таблице обычно можно увидеть только те сведения, которые в ней хранятся. Запрос позволяет выбрать поля из разных источников и указать, как именно нужно объединить информацию.
-
Использовать выражения в качестве полей. Например, в роли поля может выступить функция, возвращающая дату, а с помощью функции форматирования можно управлять форматом значений из полей в результатах запроса.
org/ListItem»>
Просматривать записи, которые отвечают указанным вами условиям. При открытии таблицы отображаются все записи. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Основные этапы создания запроса на выборку
Вы можете создать запрос на выборку с помощью мастера или конструктора запросов. Некоторые элементы недоступны в мастере, однако их можно добавить позже из конструктора. Хотя это разные способы, основные этапы аналогичны.
-
Выберите таблицы или запросы, которые хотите использовать в качестве источников данных.
-
Укажите поля из источников данных, которые хотите включить в результаты.
-
Также можно задать условия, которые ограничивают набор возвращаемых запросов записей.
Создав запрос на выборку, запустите его, чтобы посмотреть результаты. Чтобы выполнить запрос на выборку, откройте его в режиме таблицы. Сохранив запрос, вы сможете использовать его позже (например, в качестве источника данных для формы, отчета или другого запроса).
Создание запроса на выборку с помощью мастера запросов
Мастер позволяет автоматически создать запрос на выборку. При использовании мастера вы не полностью контролируете все детали процесса, однако таким способом запрос обычно создается быстрее. Кроме того, мастер иногда обнаруживает в запросе простые ошибки и предлагает выбрать другое действие.
Подготовка
Если вы используете поля из источников данных, которые не связаны между собой, мастер запросов предлагает создать между ними отношения. Он откроет окно отношений, однако если вы внесете какие-то изменения, то вам потребуется перезапустить мастер. Таким образом, перед запуском мастера имеет смысл сразу создать все отношения, которые потребуются вашему запросу.
Дополнительную информацию о создании отношений между таблицами можно найти в статье Руководство по связям между таблицами.
Использование мастера запросов
-
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
-
В диалоговом окне Новый запрос выберите пункт Простой запрос и нажмите кнопку ОК.
-
Теперь добавьте поля. Вы можете добавить до 255 полей из 32 таблиц или запросов.
Для каждого поля выполните два указанных ниже действия.
-
В разделе Таблицы и запросы щелкните таблицу или запрос, содержащие поле.
-
В разделе Доступные поля дважды щелкните поле, чтобы добавить его в список Выбранные поля. Если вы хотите добавить в запрос все поля, нажмите кнопку с двумя стрелками вправо (>>).
Добавив в запрос все необходимые поля, нажмите кнопку Далее.
-
Если вы не добавили ни одного числового поля (поля, содержащего числовые данные), перейдите к действию 9. При добавлении числового поля вам потребуется выбрать, что именно вернет запрос: подробности или итоговые данные.
Выполните одно из указанных ниже действий.
-
Если вы хотите просмотреть отдельные записи, выберите пункт подробный и нажмите кнопку Далее. Перейдите к действию 9.
org/ListItem»>
Если вам нужны итоговые числовые данные, например средние значения, выберите пункт итоговый и нажмите кнопку Итоги.
В диалоговом окне Итоги укажите необходимые поля и типы итоговых данных. В списке будут доступны только числовые поля.
Для каждого числового поля выберите одну из перечисленных ниже функций.
-
Sum — запрос вернет сумму всех значений, указанных в поле.
org/ListItem»>
Avg — запрос вернет среднее значение поля.
Min — запрос вернет минимальное значение, указанное в поле.
Max — запрос вернет максимальное значение, указанное в поле.
Если вы хотите, чтобы в результатах запроса отобразилось число записей в источнике данных, установите соответствующий флажок Подсчет числа записей в (название источника данных).
Нажмите ОК, чтобы закрыть диалоговое окно Итоги.
Если вы не добавили в запрос ни одного поля даты и времени, перейдите к действию 9. Если вы добавили в запрос поля даты и времени, мастер запросов предложит вам выбрать способ группировки значений даты. Предположим, вы добавили в запрос числовое поле («Цена») и поле даты и времени («Время_транзакции»), а затем в диалоговом окне Итоги указали, что хотите отобразить среднее значение по числовому полю «Цена». Поскольку вы добавили поле даты и времени, вы можете подсчитать итоговые величины для каждого уникального значения даты и времени, например для каждого месяца, квартала или года.
Выберите период, который хотите использовать для группировки значений даты и времени, а затем нажмите кнопку Далее.
Примечание: В режиме конструктора для группировки значений по периодам можно использовать выражения, однако в мастере доступны только указанные здесь варианты.
На последней странице мастера задайте название запроса, укажите, хотите ли вы открыть или изменить его, и нажмите кнопку Готово.
Если вы решили открыть запрос, он отобразит выбранные данные в режиме таблицы. Если вы решили изменить запрос, он откроется в режиме конструктора.
К началу страницы
Создание запроса в режиме конструктора
В режиме конструктора можно вручную создать запрос на выборку. В этом режиме вы полнее контролируете процесс создания запроса, однако здесь легче допустить ошибку и необходимо больше времени, чем в мастере.
Создание запроса
-
Действие 1. Добавьте источники данных -
Действие 2. Соедините связанные источники данных -
Действие 3. Добавьте выводимые поля -
Действие 4. Укажите условия -
Действие 5. Рассчитайте итоговые значения -
Действие 6. Просмотрите результаты
Действие 1. Добавьте источники данных
При использовании конструктора для добавления источников данных их источники и поля добавляются в отдельных шагах. Однако вы всегда можете добавить дополнительные источники позже.
-
На вкладке Создание в группе Другое нажмите кнопку Конструктор запросов.
-
Дважды щелкните каждый источник данных, который вы хотите использовать, или выберите каждый из них, а затем нажмите кнопку «Добавить».
Автоматическое соединение
Если между добавляемыми источниками данных уже заданы отношения, они автоматически добавляются в запрос в качестве соединений. Соединения определяют, как именно следует объединять данные из связанных источников. Access также автоматически создает соединение между двумя таблицами, если они содержат поля с совместимыми типами данных и одно из них — первичный ключ.
Вы можете настроить соединения, добавленные приложением Access. Access выбирает тип создаваемого соединения на основе отношения, которое ему соответствует. Если Access создает соединение, но для него не определено отношение, Access добавляет внутреннее соединение.
Если приложение Access при добавлении источников данных автоматически создало соединения правильных типов, вы можете перейти к действию 3 (добавление выводимых полей).
Повторное использование одного источника данных
В некоторых случаях необходимо соединить две копии одной и той же таблицы или запроса, называемые запросом самосоединение, которые объединяют записи из одной таблицы при совпадении значений в соединитьые поля. Например, допустим, что у вас есть таблица «Сотрудники», в которой в поле «ОтчетЫВ» для записи каждого сотрудника вместо имени отображается его имя руководителя. Вместо этого вы можете самостоятельно отобразить имя руководителя в записях каждого сотрудника.
При добавлении источника данных во второй раз Access присвоит имени второго экземпляра окончание «_1». Например, при повторном добавлении таблицы «Сотрудники» ее второй экземпляр будет называться «Сотрудники_1».
Действие 2. Соедините связанные источники данных
Если у источников данных, которые вы добавляете в запрос, уже есть связи, Access автоматически создает внутреннее присоединение для каждой связи. Если целостность данных, access также отображает «1» над линией связи, чтобы показать, какая таблица находится на стороне «один» отношение «один-ко-многим», и символ бесконечности(∞),чтобы показать, какая таблица находится на стороне «многие».
Если вы добавили в запрос другие запросы и не создали между ними отношения, Access не создает автоматических соединений ни между ними, ни между запросами и таблицами, которые не связаны между собой. Если Access не создает соединения при добавлении источников данных, как правило, их следует создать вручную. Источники данных, которые не соединены с другими источниками, могут привести к проблемам в результатах запроса.
Кроме того, можно сменить тип соединения с внутреннего на внешнее соединение, чтобы запрос включал больше записей.
Добавление соединения
-
Чтобы создать соединение, перетащите поле из одного источника данных в соответствующее поле в другом источнике.
Access добавит линию между двумя полями, чтобы показать, что они соединены.
Изменение соединения
-
Дважды щелкните соединение, которое требуется изменить.
Откроется диалоговое окно Параметры соединения.
-
Ознакомьтесь с тремя вариантами в диалоговом окне Параметры соединения.
-
Выберите нужный вариант и нажмите кнопку ОК.
После создания соединений можно добавить выводимые поля: они будут содержать данные, которые должны отображаться в результатах.
Действие 3. Добавьте выводимые поля
Вы можете легко добавить поле из любого источника данных, добавленного в действии 1.
-
Для этого перетащите поле из источника в верхней области окна конструктора запросов вниз в строку Поле бланка запроса (в нижней части окна конструктора).
При добавлении поля таким образом Access автоматически заполняет строку Таблица в таблице конструктора в соответствии с источником данных поля.
Совет: Чтобы быстро добавить все поля в строку «Поле» бланка запроса, дважды щелкните имя таблицы или запроса в верхней области, чтобы выделить все поля в нем, а затем перетащите их все сразу вниз на бланк.
Использование выражения в качестве выводимого поля
Вы можете использовать выражение в качестве выводимого поля для вычислений или создания результатов запроса с помощью функции. В выражениях могут использоваться данные из любых источников запроса, а также функции, например Format или InStr, константы и арифметические операторы.
-
В пустом столбце таблицы запроса щелкните строку Поле правой кнопкой мыши и выберите в контекстном меню пункт Масштаб.
-
В поле Масштаб введите или вставьте необходимое выражение. Перед выражением введите имя, которое хотите использовать для результата выражения, а после него — двоеточие. Например, чтобы обозначить результат выражения как «Последнее обновление», введите перед ним фразу Последнее обновление:.
Примечание: С помощью выражений можно выполнять самые разные задачи. Их подробное рассмотрение выходит за рамки этой статьи. Дополнительные сведения о создании выражений см. в статье Создание выражений.
Действие 4. Укажите условия
Этот этап является необязательным.
С помощью условий можно ограничить количество записей, которые возвращает запрос, выбирая только те из них, значения полей в которых отвечают заданным критериям.
Определение условий для выводимого поля
-
В таблице конструктора запросов в строке Условие отбора поля, значения в котором вы хотите отфильтровать, введите выражение, которому должны удовлетворять значения в поле для включения в результат. Например, чтобы включить в запрос только записи, в которых в поле «Город» указано «Рязань», введите Рязань в строке Условие отбора под этим полем.
Различные примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
-
Укажите альтернативные условия в строке или под строкой Условие отбора.
Когда указаны альтернативные условия, запись включается в результаты запроса, если значение соответствующего поля удовлетворяет любому из указанных условий.
Условия для нескольких полей
Условия можно задать для нескольких полей. В этом случае для включения записи в результаты должны выполняться все условия в соответствующей строке Условия отбора либо Или.
Настройка условий на основе поля, которое не включается в вывод
Вы можете добавить в запрос поле, но не включать его значения в выводимые результаты. Это позволяет использовать содержимое поля для ограничения результатов, но при этом не отображать его.
-
Добавьте поле в таблицу запроса.
-
Снимите для него флажок в строке Показывать.
-
Задайте условия, как для выводимого поля.
Действие 5. Рассчитайте итоговые значения
Этот этап является необязательным.
Вы также можете вычислить итоговые значения для числовых данных. Например, может потребоваться узнать среднюю цену или общий объем продаж.
Для расчета итоговых значений в запросе используется строка Итого. По умолчанию строка Итого не отображается в режиме конструктора.
- org/ListItem»>
-
Для каждого необходимого поля в строке Итого выберите нужную функцию. Набор доступных функций зависит от типа данных в поле.
Дополнительные сведения о функциях строки «Итого» в запросах см. в статье Суммирование или подсчет значений в таблице с помощью строки «Итого».
Когда запрос открыт в конструкторе, на вкладке «Конструктор» в группе «Показать или скрыть» нажмите кнопку Итоги.
Access отобразит строку Итого на бланке запроса.
Действие 6. Просмотрите результаты
Чтобы увидеть результаты запроса, на вкладке «Конструктор» нажмите кнопку Выполнить. Access отобразит результаты запроса в режиме таблицы.
Чтобы вернуться в режим конструктора и внести в запрос изменения, щелкните Главная > Вид > Конструктор.
Настраивайте поля, выражения или условия и повторно выполняйте запрос, пока он не будет возвращать нужные данные.
К началу страницы
Управление запросами (Power Query) — Служба поддержки Майкрософт
Excel
Импорт и анализ данных
Импорт данных
Импорт данных
Управление запросами (Power Query)
Excel для Microsoft 365 Excel для Интернета Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше
Вы можете управлять запросами в области «Запросы» Редактор Power Query или на вкладке «Запросы» на панели «Запросы & подключения» в Excel. Это особенно полезно, если у вас много запросов и вы хотите быстро найти запрос. После поиска запроса можно выполнить ряд дополнительных действий, таких как дублирование, ссылка, слияние, добавление, совместное использование и удаление запроса.
При создании запроса сведения о подключении создаются в фоновом режиме. Роль запроса — формирование данных. Сведения о подключении должны поддерживать сведения об источнике данных и обновлять их в соответствии с параметрами обновления, такими как частота.
Не все запросы могут быть загружены на лист. Это может произойти, когда вы импортируете данные из внешнего источника данных, формируете данные в Редактор Power Query, выбираете home> Load To, а затем используете диалоговое окно «Импорт данных», чтобы поместить запрос в модель данных или ODC-файл.
Ниже приведена сводка команд, которые можно использовать в том порядке, в котором они отображаются в соответствующих контекстных меню на вкладке «Запросы» на панели «Запросы & Подключение» в Excel или на панели «Запросы» Редактор Power Query. Некоторые команды доступны только на одной панели. Многие из этих команд также доступны на вкладке «Запрос контекста» на ленте. Все запросы в книге отображаются и сортируются по дате и времени последнего изменения, начиная с последнего.
-
Выполните одно из следующих действий:
в Excel выберите запросы> данных & подключения> запросы.
В разделе Редактор Power Query Выбор данных> получить > запуска Редактор Power Query и просмотреть область запросов слева.
-
Выберите команду управления запросом:
Edit Edits the query in the Редактор Power Query. Доступно только на вкладке » Запросы » & «Подключения «.
Удалить Удаляет запрос.
Переименовать Изменяет имя запроса.
Обновить Предоставляет актуальные данные из внешних источников данных. Доступно только на вкладке « Запросы » & «Подключения «. Дополнительные сведения см. в разделе «Обновление подключения к внешним данным» в Excel.
Загрузить в Отображает диалоговое окно «Импорт данных», в котором можно выбрать способ просмотра данных, место их размещения и добавить в модель данных. Доступно только на вкладке » Запросы » & «Подключения «.
Дублировать Создает копию выбранного запроса с тем же именем, что и исходный запрос, добавленный (2). Вы можете переименовать запрос, чтобы упростить его идентификацию. Последующие изменения исходного запроса не влияют на новый запрос.
Ссылки Создает новый запрос, который использует шаги предыдущего запроса без необходимости дублировать запрос. Новый запрос следует тому же соглашению об именовании, что и команда Duplicate . Вы можете переименовать новый запрос, чтобы его было проще идентифицировать. Последующие изменения исходного запроса, которые приводят к изменению выходных данных, влияют на новый запрос.
Объединить Объединение столбцов в запросе с соответствующими столбцами в других запросах. Дополнительные сведения о слиянии см. в разделе «Запросы на слияние». Доступно только на вкладке » Запросы » & «Подключения «.
Добавить Добавление столбцов в запрос с соответствующими столбцами в других запросах. Дополнительные сведения о добавлении см. в разделе «Запросы на добавление». Доступно только на вкладке » Запросы » & «Подключения «.
Переместить в группу Перемещает запрос в группу в списке или, если группы отсутствуют, выберите «Создать группу», чтобы создать ее. Присвойте ему понятное имя, например «Бюджет» или «Маркетинг». Используйте группы для упорядочивания множества запросов по категориям. Вы даже можете создавать группы в группах.
Вверх Перемещает запрос вверх в списке запросов.
Переместить вниз Перемещает запрос вниз в списке запросов.
В диалоговом окне «Создание функции » отображается диалоговое окно «Создание функции». Доступно только на панели запросов в Редактор Power Query. Дополнительные сведения см. в Power Query функции M.
Преобразование в параметр Преобразует запрос в параметр и отображает его в предварительной версии данных. Если текущий дисплей является параметром, команда переключается на преобразование в запрос. Доступно только на панели запросов в Редактор Power Query. Дополнительные сведения см. в разделе «Создание запроса параметров Power Query».
Расширенный редактор открывает окно Расширенный редактор окна. Дополнительные сведения см. в статье «Создание Power Query в Excel». Доступно только на панели запросов в Редактор Power Query.
Экспорт файла подключения Сохраняет запрос в виде ODC-файла подключения. ODC-файл содержит определение запроса, сведения о подключении к источнику данных и все шаги преобразования. Это полезно, если вы хотите поделиться запросами с другими пользователями и книгами. Кроме того, можно использовать команду «Свойства» на вкладке «Контекст запроса» Power Query ленты. Дополнительные сведения см. в статье «Создание, изменение подключений к внешним данным и управление ими». Доступно только на вкладке » Запросы » & «Подключения «.
Показать окно просмотра Отображает всплывающее окно запроса с предварительным просмотром данных и другими полезными сведениями. Доступно только на вкладке » Запросы » & «Подключения «.
Вариантов размещения Используйте эту команду для управления запросом и сведениями о подключении к источнику данных. На вкладке « Запросы » на панели & connections (Запросы) откроется диалоговое окно «Свойства запроса». На панели «Запросы» в Редактор Power Query откроется диалоговое окно «Параметры запроса».
Вы можете включить или отключить отображение всплывающего элемента запроса при наведении указателя мыши на имя запроса на вкладке «Запрос» на панели «Запросы & подключения». Этот параметр управляет отображением всплывающего элемента только путем наведения указателя мыши. Вы по-прежнему можете отобразить всплывающее окно запроса, щелкнув правой кнопкой мыши имя запроса, а затем выбрав команду «Показать».
-
Выберите параметры > «Получение > данных».
-
Слева в разделе GLOBAL выберите » Общие».
-
Справа в разделе » Предварительный просмотр запроса» снимите флажок рядом с кнопкой «Показать окно при наведении указателя мыши». Действие по умолчанию — отображение всплывающего меню при наведении указателя мыши.
Excel для Интернета включает Power Query (также называемую get & Transform) для повышения производительности при работе с импортируемыми источниками данных. Запросы и связанные сведения можно просмотреть в области задач «Запросы».
Примечание: Следите за дальнейшими объявлениями об улучшениях Excel для Интернета и Power Query интеграции.
Запросы и связанные сведения можно просмотреть на панели запросов.
-
Убедитесь, что вы в режиме правки ( выберите «Просмотр > редактирование»).
-
Выберите запросы > данных.
Результат
Excel отображает область задач » Запросы» и все запросы в текущей книге, а также сведения о запросах, такие как количество строк, дата последнего обновления, расположение и состояние загрузки. Если запрос загружается в модель данных, а не в сетку, в Excel отображается значение «Только подключение».
Вы можете выполнять различные задачи группирования, чтобы лучше упорядочить запросы.
-
Убедитесь, что вы в режиме правки ( выберите «Просмотр > редактирование»).
-
Выберите запросы > данных.
-
Выполните одно или несколько из указанных ниже действий.
Создание группы-
В правом верхнем углу области » Запросы» выберите «Дополнительные параметры» > «Создать группу».
-
Введите имя (при необходимости описание) и нажмите кнопку » Сохранить».
Перемещение запроса или группы в другую группу -
-
Рядом с запросом или именем группы выберите «Дополнительные параметры» >«Переместить в группу».
-
Выберите группу, в которую нужно переместить, а затем нажмите кнопку «Сохранить».
Перемещение группы на верхний уровень
Развертывание или свертывание групп
-
Чтобы развернуть или свернуть все группы, в правом верхнем углу области «Запросы» выберите «Дополнительные параметры» > «Развернуть все» или «Свернуть все».
-
Чтобы развернуть или свернуть определенную группу, щелкните стрелку рядом с ее именем.
Обновление всех запросов в группе
-
Рядом с именем группы выберите » Дополнительные параметры» >«Обновить».
Примечание Обновление работает только для поддерживаемых источников данных. Дополнительные сведения см. в Power Query источниках данных в версиях Excel.
Разгруппировка запросов в группе
Переименование группы
Рядом с именем группы выберите » Дополнительные параметры»… > переименовать.
Введите новое имя и нажмите клавишу RETURN.
Удаление группы
Изменение свойств группы
-
Рядом с именем группы выберите «Дополнительные параметры. .. >«.
-
Переименуйте группу или измените ее описание, а затем нажмите кнопку «Сохранить».
Совет Чтобы просмотреть описание группы, наведите на нее указатель мыши.
См. также
Справка по Power Query для Excel
Изменение свойств параметров запроса
Использование панели «Запросы» (docs.com)
Руководство по MongoDB 15
Определение
-
find
Выполняет запрос и возвращает первое пакет результатов и
идентификатор курсора, из которого клиент может создать курсор.В
mongosh
эту команду также можно запустить черезdb.collection.find()
или
db.collection.findOne()
вспомогательный метод.Вспомогательные методы удобны для пользователей
mongosh
, но могут не
возвращают тот же уровень информации, что и команды базы данных. В случаях, когда
удобство не требуется или требуются дополнительные поля возврата,
используйте команду базы данных.
Синтаксис
Изменено в версии 4.4 : MongoDB отказывается от опции oplogReplay
вместо find
команда. Оптимизация, включенная этим флагом в предыдущих версиях, теперь
происходит автоматически для подходящих запросов в оплоге. Поэтому,
вам не нужно указывать этот флаг. Если указано, сервер принимает
флаг для обратной совместимости, но этот флаг не имеет никакого эффекта.
Команда find
имеет следующий синтаксис:
Изменено в версии 5. 0 .
db.runCommand( |
{ |
найти: <строка>, |
сортировка: <документ>, |
проекция : <документ>, |
подсказка: <документ или строка>, |
пропуск: |
limit: |
batchSize: |
singleBatch: |
комментарий: <любой>, |
maxTimeMS: |
readConcern: |
max: |
returnKey: |
showRecordId: |
tailable: |
noCursorTimeout: |
awaitData: |
allowPartialResults: |
сопоставление: |
allowDiskUse : |
let: |
} |
) 9006 3 |
Поля команды
Команда принимает следующие поля:
Поле | Тип | Описание | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
строка | Имя коллекции или представления для запроса. | |||||||||||
фильтр | документ | Дополнительно. Предикат запроса. Если не указано, то все документы в коллекция будет соответствовать предикату. | ||||||||||
документ | Дополнительно. Спецификация сортировки для упорядочения результатов. | |||||||||||
проекция | документ | Дополнительно. Спецификация проекции на определить, какие поля включить в возвращаемые документы. Видеть Проекция и проекционные операторы.
| ||||||||||
подсказка | строка или документ | 9 0062 |||||||||||
пропустить | Положительное целое число | Необязательно. Количество документов, которые необходимо пропустить. По умолчанию 0. | ||||||||||
предел | Неотрицательное целое число | Дополнительно. Максимальное количество документов для возврата. Если не указано, затем по умолчанию без ограничений. Ограничение 0 эквивалентно установке no предел. | ||||||||||
размер партии | неотрицательное целое число | Необязательно. Количество документов, подлежащих возврату в первом пакете. По умолчанию 101. Пакетный размер 0 означает, что курсор будет установлен, но в первой партии документы не возвращаются. В отличие от предыдущей версии проводного протокола, размер партии 1 для
команда | ||||||||||
одиночная партия | логическое значение | Дополнительно. Определяет, закрывать ли курсор после первого партия. По умолчанию ложно. | ||||||||||
комментарий | любой | Дополнительно. Пользовательский комментарий для присоединения к этой команде. После установки это комментарий появляется рядом с записями этой команды в следующем мест:
Комментарий может быть любого допустимого типа BSON (строка, целое число, объект, массив и т. д.). Любой комментарий к команде Изменено в версии 4.4. До версии 4.4 комментарии могли быть только строками. | ||||||||||
maxTimeMS | положительное целое число | Необязательно. Совокупный лимит времени в миллисекундах для обработки операций на курсор. MongoDB прерывает операцию в ближайшее время после точка прерывания. При указании | ||||||||||
readConcern | документ | Дополнительно. Определяет интерес к чтению. Начиная с MongoDB 3.6, параметр readConcern имеет следующее
синтаксис: Возможные уровни опасности чтения:
Дополнительные сведения об уровнях считывания см. Прочтите Уровни беспокойства. Команда | ||||||||||
макс. | документ | Дополнительно. эксклюзивная верхняя граница для определенного индекса. Видеть
Начиная с MongoDB 4.2, чтобы использовать поле | ||||||||||
мин. | документ | Дополнительно. Нижняя граница включительно для конкретного индекса. Видеть
Начиная с MongoDB 4.2, чтобы использовать поле | ||||||||||
Клавиша возврата | логический | Опционально. Если true, возвращает только ключи индекса в результирующих документах.
Значение по умолчанию — ложь. Если returnKey истинно и находит
команда не использует индекс, возвращаемые документы будут пустыми. | ||||||||||
showRecordId | логическое значение | Необязательно. Определяет, следует ли возвращать идентификатор записи для каждого документа. Если true, добавляет поле $recordId к возвращаемым документам. | ||||||||||
хвостовой | логический | Опционально. Возвращает хвостовой курсор для закрытых коллекций. | ||||||||||
awaitData | логическое значение | Необязательно. Используйте вместе с опцией tailable, чтобы заблокировать
команда getMore на курсор временно, если в конце
данных, а не возвращать никаких данных. По истечении тайм-аута,
find возвращается как обычно. | ||||||||||
oplogReplay | логическое значение | Устарело, начиная с версии 4.4 90 044 . Дополнительно. Внутренняя команда для воспроизведения oplog набора реплик. Чтобы использовать
Например, следующая команда воспроизводит документы из данных
УстарелоИзменено в версии 4.4 . Начиная с MongoDB 4.4, поле | ||||||||||
noCursorTimeout | логическое значение | Необязательно. Предотвращает истечение времени ожидания сервером бездействующих курсоров после бездействия. период (10 минут). | ||||||||||
allowPartialResults | логическое значение | Необязательно. Для запросов к сегментированной коллекции позволяет
команда (или последующие Начиная с MongoDB 4.4, если Если запрошенные осколки изначально доступны для
| ||||||||||
сопоставление | документ | Дополнительно. Указывает порядок сортировки для операции. Сопоставление позволяет пользователям указывать специфичные для языка правила для сравнения строк, такие как правила для регистр букв и знаки ударения. Параметр сопоставления имеет следующий синтаксис:
При указании сортировки поле Если сопоставление не указано, но коллекция имеет
сопоставление по умолчанию (см. Если для коллекции или для операций, MongoDB использует простое бинарное сравнение, использовавшееся в предыдущих версии для сравнения строк. Нельзя указать несколько параметров сортировки для операции. Для например, вы не можете указать разные параметры сортировки для каждого поля, или если выполняя поиск с сортировкой, вы не можете использовать одну сортировку для найти и другой для рода. | ||||||||||
allowDiskUse | логическое значение | Необязательно. Используйте этот параметр, чтобы переопределить Начиная с MongoDB 6.0, если установлено Подробнее см. Для получения более полной документации по Для получения дополнительной информации об ограничениях памяти для больших блоков сортировки, см. Сортировка и использование индексов. Новое в версии 4.4 . | ||||||||||
пусть | документ | Дополнительно. Задает документ со списком переменных. Это позволяет вам улучшить читаемость команды, отделив переменные от запроса текст. Синтаксис документа:
Переменная устанавливается на значение, возвращаемое выражением, и не может быть изменены впоследствии. Чтобы получить доступ к значению переменной в команде, используйте двойной
префикс знака доллара ( Чтобы использовать переменную для фильтрации результатов, вы должны получить доступ к переменной
внутри оператора Полный пример использования Новое в версии 5.0 . |
Вывод
Команда возвращает документ, содержащий информацию о курсоре, включая идентификатор курсора и первую партию документов. Например, следующий документ возвращается при запуске против сегментированного коллекция:
{ |
"курсор" : { |
"firstBatch" : [ |
"_id": ObjectId ("5e8e2ca217b5324fa9847435"), |
" почтовый индекс» : «20001», |
«x» : 1 |
}, |
{ |
«_ id" : ObjectId("5e8e2ca517b5324fa9847436"), |
"zipcode" : "30001", |
"x" : 1 |
} |
], |
"partialResultsReturned" : true, // Начиная с версия 4. 4 |
«id» : NumberLong («668860441858272439»), |
«ns» : «test.contacts» |
} , |
"хорошо" : 1, |
"operationTime" : Отметка времени (1586380205, 1), |
"$clusterTime" : { |
"clusterTime" : Отметка времени (1586380225, 2), 9006 3 |
"подпись" : { |
"хеш": BinData(0,"aI/jWsUVUSkMw8id+A+AVVTQh9Y="), |
"keyId" : NumberLong("6813364731999420435") |
} |
} |
Поле | Описание |
---|---|
курсор | Содержит информацию о курсоре, включая
курсор Начиная с версии 4.4, если операция с сегментированной коллекцией
возвращает частичные результаты из-за недоступности запрошенного
осколки, Если запрошенные осколки изначально доступны для
|
"ok" | Указывает, успешно ли выполнена команда ( 1 ) или нет
( 0 ). |
В дополнение к вышеупомянутым найдите
- специальные поля,
db.runCommand()
включает следующую информацию для
наборы реплик и сегментированные кластеры:
-
$clusterTime
-
OperationTime
Подробности см. в результатах db.runCommand().
Поведение
$regex
Поиск запросов больше не игнорировать недопустимое регулярное выражение Начиная с MongoDB 5.1, недопустимо $regex options
параметры больше не игнорируются. Это изменение делает
$regex options
больше соответствует
использование $regex
в команде aggregate
и
проекционные запросы.
Сеансы
Новое в версии 4.0 .
Для курсоров, созданных внутри сеанса, нельзя вызывать
getMore
вне сеанса.
Аналогично, для курсоров, созданных вне сеанса, нельзя вызывать
getMore
внутри сеанса.
Тайм-аут простоя сеанса
Драйверы MongoDB и mongosh
связывать все операции с сеансом сервера, за исключением неподтвержденных
операции записи. Для операций, явно не связанных с
сессии (т.е. используя Mongo.startSession()
), драйверы MongoDB
и mongosh
создают неявный сеанс и связывают его
с операцией.
Если сеанс бездействует более 30 минут, сервер MongoDB
помечает этот сеанс как просроченный и может закрыть его в любое время. Когда
Сервер MongoDB закрывает сеанс, а также убивает все незавершенные
операции и открытые курсоры, связанные с сеансом. Этот
включает курсоры, настроенные с помощью noCursorTimeout()
или
maxTimeMS()
более 30 минут.
Для операций, которые возвращают курсор, если курсор может быть бездействующим в течение
более 30 минут, выполнить операцию в явном сеансе
используя Mongo.startSession()
и периодически обновлять
сеанс с помощью команды refreshSessions
. Видеть
Тайм-аут простоя сеанса для получения дополнительной информации.
Транзакции
find
можно использовать внутри многодокументных транзакций.
-
Для курсоров, созданных вне транзакции, нельзя вызывать
getMore
внутри транзакции. -
Для курсоров, созданных в транзакции, нельзя вызывать
getMore
вне транзакции.
Важный
В большинстве случаев операция с несколькими документами требует больших затрат. стоимость производительности по сравнению с записью одного документа, и наличие многодокументных транзакций не должно замена эффективной схеме проектирования. Для многих сценариев денормализованная модель данных (встроенные документы и массивы) по-прежнему будет оптимальной для вашего данных и вариантов использования. То есть для многих сценариев моделирование ваших данных надлежащим образом сведет к минимуму потребность в многодокументном транзакции.
Для дополнительных соображений по использованию транзакций (например, ограничение времени выполнения и ограничение размера оплога), см. также Производственные соображения.
Отключение клиента
Начиная с MongoDB 4.2, если клиент, выдавший , находит
отключается до завершения операции, MongoDB отмечает , находит
для завершения с помощью killOp
.
Stable API
При использовании Stable API V1 следующие
find
Командные поля не поддерживаются:
-
awaitData
-
макс.
-
мин.
-
noCursorTimeout
-
oplogReplay
-
returnKey
-
показатьРекордИд
-
tailable
Индексные фильтры и сопоставления
Начиная с MongoDB 6. 0, индексный фильтр использует сопоставление, ранее установленное с помощью планCacheSetFilter
команда.
Примеры
Укажите сортировку и ограничение
Следующая команда запускает поиск
фильтрация команд по полю рейтинг
и полю кухня
.
Команда включает проекцию
, чтобы вернуть только
следующие поля в соответствующих документах: _id
, имя
,
рейтинг
и адрес
поля.
Команда сортирует документы в результирующем наборе по имя
поле и ограничивает результирующий набор до 5 документов.
db.runCommand( |
{ |
найти: "рестораны", |
проекция: {имя: 1, рейтинг: 1, адрес: 1}, |
сортировка: {имя: 1}, |
лимит: 5 |
} 9 0063 |
) |
Переопределить уровень беспокойства чтения по умолчанию
используйте опцию readConcern
.
Следующая операция с набором реплик указывает на необходимость чтения «большинства»
для чтения самой последней копии
подтверждено, что данные были записаны на большинство узлов.
db.runCommand( |
{ |
найти: "рестораны", |
фильтр: { рейтинг: { $lt: 5 } }, |
readConcern: { уровень: "большинство" } | 9006 4
} |
) |
Независимо от уровня считывания самые последние данные о node может не отражать самую последнюю версию данных в системе.
Команда getMore
использует уровень readConcern
указано в исходном найти команду
.
readConcern
может быть указан для метода mongosh
db.collection.find()
с использованием курсора .readConcern()
method:
db. restaurants.find( { rating: { $lt: 5 } } ).readConcern("большинство") |
Дополнительные сведения о доступных чтениях см. Читать Забота.
Указать сопоставление
Сопоставление позволяет пользователям указывать специфичные для языка правила для сравнения строк, такие как правила для регистр букв и знаки ударения.
Следующая операция запускает поиск
.
команда с указанным сопоставлением:
db.runCommand( |
{ |
find: "myColl", | фильтр: { категория: "кафе", статус: "а" } , |
сортировка: { категория: 1 }, |
сопоставление: { язык: "fr", сила: 1 } |
} |
mongosh
предоставляет cursor.collation()
для
указать параметры сортировки для
db.collection.find()
операция.
Использовать переменные в
let
Новое в версии 5.0 .
Чтобы определить переменные, к которым вы можете получить доступ в другом месте команды, используйте пусть вариант.
Для фильтрации результатов с использованием переменной необходимо получить доступ к переменной
внутри оператора $expr
.
Создать коллекцию cakeFlavors
:
db.cakeFlavors.insertMany( [ |
{ _id: 1, вкус: "шоколад" }, |
{ _id: 2, вкус: "клубника" }, |
{ _id: 3, flavor: "вишня" } |
] ) |
В следующем примере определяется переменная targetFlavor
в пусть
и
использует переменную для получения вкуса шоколадного торта:
db.cakeFlavors.runCommand( { |
найти: db.cakeFlavors.getName(), |
filter: { $expr: { $eq: [ "$ вкус", "$$targetFlavor " ] } }, |
let : { targetFlavor: "шоколад" } |
} ) |
См.
также:Драйвер Изменения совместимости
← deletefindAndModify →
Метод поиска MongoDB: введение и Примеры запросов
В этой статье мы рассмотрим основы поиска MongoDB, метода, используемого для извлечения документа из коллекции MongoDB.
Мы рассмотрим несколько примеров запросов, используя Studio 3T и набор данных Customers
, который представляет собой полностью поддельный список клиентов.
Метод find()
в MongoDB выбирает документы в коллекции или представлении и возвращает курсор к выбранным документам. Имеет два параметра: запрос и проекция .
db.collection.find(, )
- первый параметр query или filter определяет поиск возвращаются
Для написания и создания запросов db.collection.find()
мы будем использовать IntelliShell Studio 3T с автозавершением запросов в наших примерах.
Если вы не знаете язык запросов MongoDB, вы все равно можете собрать find()
запросы через визуальный конструктор запросов с помощью перетаскивания. Просто перетащите поля, укажите значение и нажмите "Выполнить".
Если вы хорошо владеете SQL и хотите сэкономить время на наборе текста, в Studio 3T также есть SQL Query, который позволяет вам использовать SQL для запросов к MongoDB.
Откройте Studio 3T и подключитесь к базе данных MongoDB.
Затем откройте мастер импорта на панели инструментов.
Затем выберите JSON в качестве формата импорта.
Щелкните OK .
Нажмите + , чтобы добавить исходные документы JSON, –, чтобы удалить их, или значок буфера обмена, , чтобы вставить данные JSON из буфера обмена.
Здесь мы добавим наш исходный документ JSON, Customers
.
Дважды щелкните ячейку, чтобы ввести целевую коллекцию. Мы называем наших клиентов
. Обратите внимание на заглавную С!
В столбце Режим вставки дважды щелкните ячейку, чтобы выбрать один из режимов вставки в раскрывающемся меню.
Нажмите Выполнить , чтобы запустить импорт. Вы должны увидеть новую коллекцию в дереве подключений слева.
Теперь мы готовы опробовать примеры метода find()
, которые можно вводить/вставлять и редактировать в IntelliShell.
Давайте откроем IntelLIShell, щелкнув значок на панели инструментов.
И попробуйте следующие запросы.
Вернуть все документы в коллекции
db.Customers.find() //возвращает все документы в коллекции
Если параметры запроса и проекции не указаны, метод find() возвращает все документы в коллекции.
Вернуть документы, соответствующие заданным критериям запроса
db.Customers.find({ 'Addresses.County': 'Норфолк' }) // возвращает документы с адресом в графстве Норфолк
Этот запрос просто возвращает документы с адресом в графстве Норфолк. Имеется параметр фильтра, но проекция не указана, поэтому возвращается весь документ со всеми полями.
Возвращать документы только с указанными полями (проекция)
Здесь мы указали список полей, которые мы хотим вернуть в качестве параметра проекции.
db.Customers.find({ 'Addresses.County': 'Норфолк' }, { '_id': 0, «Полное имя»: 1, «Адреса.
Клиент может использовать несколько адресов одновременно (рабочий, домашний и т. д.), и он может перемещаться, поэтому мы решили просто вернуть соответствующий адрес ( 'Addresses.$'
) вместе с именем покупатель ( «Полное имя»
). Для этого запроса это все данные, которые нам нужны, так зачем извлекать больше, чем необходимо?
Возврат документов с несколькими критериями соответствия
Что делать, если вы хотите провести поиск более чем в одном округе?
db.Customers.find({ 'Адреса.Округ': { $in: ['Эссекс', 'Саффолк', 'Норфолк', 'Кембриджшир'] } }) //клиенты, чей адрес находится в Восточной Англии
Фильтр позволяет выбирать документы не только на равенство со значением. В этом случае мы перечислили несколько значений для проверки использования $in
оператор запроса сравнения.
Есть несколько других с довольно очевидными значениями, например, $eq
(==), $gt
(>), $lt
(<), $gte
(>=), $lte
(<=), $ne
(!=) и $nin
(не в).
Есть также ряд логических операторов. Существует множество других операторов запросов и проекций MongoDB, которые позволяют выполнять довольно сложные фильтры, но это уже другая тема!
Использование методов курсора
Метод find MongoDB на самом деле не возвращает данные, несмотря на то, что по умолчанию оболочка mongo выводит первые двадцать строк при выполнении метода find()
.
Это указатель на документы, которые возвращаются. Он содержит ссылку на документы, соответствующие критериям запроса, которые вы передаете методу find()
. Это позволяет указать, какую обработку вы хотите использовать для возвращаемых данных.
Существует несколько таких методов курсора.
count()
Метод курсора count() удобен для возврата количества документов, соответствующих критериям.
Например, в нашей базе данных клиентов:
db.Customers.find({'Addresses.County': 'Norfolk'}).count()
показывает, сколько клиентов имеют адреса в округе Норфолк.
limit()
Метод limit() cursor ограничивает число в результате значением, которое вы передаете, так что
db.Customers.find({'Addresses.County': 'Norfolk'}).limit(1)
возвращает только первого клиента.
skip()
Существует также метод skip() , с помощью которого можно легко реализовать прокручиваемое окно в приложении.
db.Customers.find({ 'Addresses.County': 'Норфолк' }, { '_id': 0, «Полное имя»: 1 }).Сортировать({ 'Имя.Фамилия': 1 }).skip(10).limit(20)
Как вы уже заметили, вы можете сложить эти методы и использовать pretty()
db.Customers.find({'Addresses.County': 'Norfolk'}).limit(1).pretty()
, чтобы вернуть документ в удобном для чтения формате.
Методы skip() и limit() не имеют большого смысла без метода sort() , потому что в противном случае результаты лучше всего считать неупорядоченными.