MongoDB Сортировка результатов запроса

Mongodb Sortirovka Rezul Tatov Zaprosa



Почти все системы баз данных отдают приоритет сортировке данных перед их извлечением, что отличает их от других методов хранения данных. MongoDB также имеет различные способы определения способа сортировки данных. В основном мы используем метод sort() для определения последовательности появления документа. Порядок последовательности передается в качестве параметра методу sort(). За одним или несколькими полями, составляющими метод sort(), часто следует либо значение «1», либо «-1». Метод sort() делает запрос более читабельным, что улучшает понимание указанной коллекции.

Как MongoDB сортирует результаты запросов?

Метод sort принимает поле и связанное с ним значение как один параметр. Метод sort принимает параметры в формате JSON, например {Field: Value}. Несколько полей и значений также можно ввести в метод sort(), чтобы получить отсортированные документы из коллекции. Рассмотрим следующий документ, в который мы вставили множество других документов в нашу базу данных. Название этой базы данных MongoDB называется «Сотрудники». Коллекция «Сотрудники» содержит всю информацию о сотрудниках, показанную ниже.

db.Employees.insertMany([
{
'имя': 'Роберт',
'ДОБ': '14-05-1993',
'мужской пол',
'электронное письмо': ' [электронная почта защищена] ',
'отдел': 'Безопасность',
'зарплата': 5000
},
{
'имя': 'кайл',
'DOB': '31-05-1999',
'женский пол',
'электронное письмо': ' [электронная почта защищена] ',
'отдел': 'ИТ',
«зарплата» : 6200
},
{
'имя': 'Мэттью',
'ДОБ': '26-04-1993',
'мужской пол',
'электронное письмо': ' [электронная почта защищена] ',
'отдел': 'Бухгалтерия',
«зарплата» : 3500
},
{
'имя': 'Кевин',
'ДОБ': '14-07-1991',
'мужской пол',
'электронное письмо': ' [электронная почта защищена] ',
'отдел': 'Безопасность',
«зарплата» : 4500
},

{
'имя': 'Юлия',
'ДОБ': '09-12-2000',
'женский пол',
'электронное письмо': ' [электронная почта защищена] ',
'отдел': 'ИТ',
'зарплата': 2500
}
])

Коллекция «Сотрудник» вставляется с предоставленными документами, подтверждение которых показано в следующем выводе. Мы собираемся использовать этот документ коллекции для демонстрации функциональности результатов запроса сортировки.









Пример #1: Несортированная коллекция MongoDB

Когда поисковый запрос выполняется с помощью метода find(), он всегда выдает несортированный набор документов. Это может быть яснее с результатами запроса, представленными ниже.



>db.Employees.find({},{_id:0})

Здесь у нас есть запрос коллекции «Сотрудник» с помощью метода find(). Метод find() принимает пустой параметр вместе с «_id:0». Для упрощения результата идентификатор документа удаляется с помощью оператора «_id:0». По умолчанию мы получаем несортированные коллекции при поиске запроса с помощью метода find(). Вывод, полученный ниже, представляет собой все несортированные документы в том виде, в каком они были на момент вставки.





Пример № 2: Сортировка результатов запроса MongoDB в порядке возрастания

Отсортированная коллекция в MongoDB получается с помощью метода sort(), который следует размещать после метода find(). Метод sort() в MongoDB принимает параметр, который включен в имя поля и порядок сортировки документа. Нам нужно ввести «1» в качестве параметра в поле, так как в этом конкретном примере мы будем извлекать документы в порядке возрастания. Следующее в запросе сортировки приводит к возрастанию.



>db.Employees.find().sort({имя:1})

Здесь мы использовали метод sort() после поиска поискового запроса. Метод sort() используется для сортировки поля «имя» в порядке возрастания, так как значение «1» помещается рядом с указанным полем. Обратите внимание, что если метод sort() не указан с каким-либо параметрическим значением, коллекция не будет отсортирована. Вывод метода sort() будет получен в порядке по умолчанию. Результаты метода sort() по полю имени в порядке возрастания отображаются в следующей оболочке MongoDB.

Пример № 3: Сортировка результатов запроса MongoDB в порядке убывания

Теперь мы показываем результаты запроса сортировки MongoDB в порядке убывания. Этот тип запроса аналогичен приведенному выше примеру, но с одним отличием. Для убывающего порядка метод sort() принимает значение «-1» напротив имени столбца. Результаты запроса сортировки в порядке убывания приведены ниже.

>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})

Здесь поисковый запрос начинается с метода find(), который находит поле «email» и возвращает только значения поля «email». Далее мы указали метод sort(), который используется для сортировки поля «email», а значение «-1» рядом с ним указывает, что полученные результаты сортировки будут в порядке убывания. Результаты запроса сортировки по убыванию извлекаются после его выполнения в оболочке MongoDB.

Пример № 4: Сортировка результатов запроса MongoDB для нескольких полей

Мы можем отсортировать несколько полей в MongoDB с помощью метода sort(). Поля для сортировки должны быть объявлены в методе sort(). Сортировка основана на порядке объявления полей, и порядок сортировки проверяется слева направо. Запрос для сортировки нескольких полей должен выглядеть так:

>db.Employees.find({},{_id:0}).sort({'имя':1,'зарплата':1})

Здесь метод sort() передается с полями «имя» и «зарплата» для сортировки. Поле «имя» из коллекции «Сотрудник» сортируется первым, потому что это поле первого аргумента метода sort(). Затем метод sort() сортирует второе поле аргумента «зарплата». Порядок обоих полей равен «1», что указывает на то, что сортировка будет осуществляться в порядке возрастания. Вывод для нескольких полей запроса сортировки создается в указанном ниже порядке сортировки.

Пример № 5: Сортировка результатов запроса MongoDB с помощью метода ограничения

Кроме того, метод sort() также может сочетаться с методом limit(), который дает ограниченное количество отсортированных документов по этому поисковому запросу. Метод limit() требует целого числа в качестве параметра, который ограничивает количество документов, которые должны быть включены в выходной набор. Ниже задается поисковый запрос, который сначала сортирует документ, а затем предоставляет указанный лимит документов.

>db.Employees.find({},{_id:0}).sort({'отдел':1,'DOB':1}).limit(4).pretty()

Здесь у нас есть поисковый запрос, который начинает операцию сортировки для столбца «отдел», а затем для столбца «DOB» в порядке возрастания с использованием метода sort(). Как только сортировка завершена, мы поместили рядом с ней метод limit() для получения ограниченного документа. Методу limit() присваивается числовое значение «4», что означает, что он отображает на выходе только четыре отсортированных документа, как показано на следующем экране:

Пример # 6: Результаты запроса сортировки MongoDB с агрегацией $sort

Во всех приведенных выше примерах мы выполнили сортировку с помощью метода sort() MongoDB. В MongoDB есть еще один способ сортировки, который реализуется с помощью агрегации $sort. Оператор $sort сортирует все входные документы, которые затем возвращают отсортированные документы в конвейер. Оператор $sort применяется к коллекции «Сотрудники» ниже.

db.Employees.aggregate([{ $sort : {зарплата: 1, _id: -1 } } ])

Здесь мы вызвали агрегатный метод, внутри которого мы можем использовать оператор «$ sort». Затем у нас есть операторное выражение $sort, которое сортирует столбец «зарплата» в порядке возрастания, а столбец «id» — в порядке убывания. Агрегация $sort, примененная к полю, выводит следующие результаты:

Пример № 6: Сортировка результатов запроса MongoDB с помощью метода Skip

Метод sort() также может сочетаться с методом skip(). Результирующий набор данных может содержать определенное количество документов, которые будут проигнорированы с помощью метода skip(). Как и метод limit(), метод skip() также принимает числовое значение, указывающее количество пропускаемых документов. Мы объединили метод sort() с методом skip() в запросе сортировки.

>db.Employees.find({},{_id:0}).sort({'зарплата':1}).skip(4).pretty()

Здесь мы использовали метод skip() рядом с методом sort(). Когда метод sort() сортирует документы, он передает результат сортировки методу sort(). После этого метод skip() удалил из коллекции первые четыре отсортированных документа.

Заключение

Статья посвящена сортировке результатов запроса в MongoDB. Для этой цели мы использовали метод sort(), который упорядочивает записи в заданной последовательности. Мы также использовали метод sort() для множественной сортировки по нескольким полям. Затем метод sort() объединяется с методами limit() и skip() для отсортированных документов с использованием этих операций. Кроме того, мы предоставили агрегацию $sort для результатов запроса сортировки в MongoDB.