> For the complete documentation index, see [llms.txt](https://reloaderlev.gitbook.io/russian-goit-node-js-new-program/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://reloaderlev.gitbook.io/russian-goit-node-js-new-program/autentifikaciya-and-avtorizaciya/mongodb-sortirovka-paginaciya.md).

# MongoDB: сортировка, пагинация

Сортировка - это расстановка элементов в возрастанию/убыванию согласно определенному критерию. В контексте баз данных, мы можем вытянуть данные с СУБД в уже отсортированном порядке.

Представим ситуацию, когда в нашей MongoDB базе есть коллекция с пользователями следующего вида:

| id | name | surname | passwordHash               | status   | age |
| -- | ---- | ------- | -------------------------- | -------- | --- |
| 1  | John | Doe     | $2y$12$iVhuWPQlloRzPTf.... | Active   | 27  |
| 2  | Mark | Avreliy | $2y$12$iVhuWPQlloRzPTf.... | Disabled | 30  |

Для того, чтобы вытянуть пользователей от старшего к меньшему, нам необходимо будет воспользоваться следующим запросом:

```
// -1 значит отсортировать "от большего к меньшему".
// для сортировки "от меньшего к большему" необходимо указать 1
userModel.find({}).sort({ age: -1 });
```

Пагинация - это получение части записей/документов в ответ на определенный поисковый критерий.

Для пагинации характерны следующие 2 понятия:

* offset (или skip в MongoDB) - количество результатов поиска, которые необходимо отсеять при вытягивании записей/документов по поисковому критерию;
* limit - количество результатов поиска, которые необходимо принять при вытягивании записей/документов по поисковому критерию. Если результатов поиска меньше, то будет вытянуто имеющееся количество результатов поиска. Например, для того, чтобы вытянуть 3-х пользователей с именем Doe, пропустив первых 2-х, следует выполнить следующий запрос:

```
userModel.find({ name: 'Doe' }).skip(3).limit(2);
```
