MongoDB: count, limit, skip, sort — оптимизация запросов

Описание полезных методов курсора MongoDB: count, limit, skip и sort. Эти методы широко используются при работе с MongoDB.

Методы курсора

Рассмотрим четыре метода, применяемых к курсору MongoDB:

  • count(): Подсчитывает количество документов в курсоре.
  • limit(n): Ограничивает количество документов в курсоре значением n.
  • skip(n): Пропускает n документов в курсоре.
  • sort({поле: значение}): Сортирует документы в курсоре. Принимает объект с парами ключ-значение, где ключи — имена полей, а значения — 1 (сортировка по возрастанию) или -1 (сортировка по убыванию).

> Важно: все эти методы вызываются до отправки курсора сервером клиенту. Они не являются методами итератора, получившего документы с сервера.

Практическое применение в MongoDB Shell

Примеры использования этих методов в MongoDB Shell. Запрос db.collection.find() по умолчанию возвращает 50 документов (размер итератора по умолчанию в Robo 3T; в стандартном MongoDB Shell — 20).

count():

db.collection.find().count()

Запрос вернет общее количество документов, соответствующих запросу find().

limit():

db.collection.find().limit(5)

Запрос вернет курсор, содержащий только 5 первых документов.

skip():

db.collection.find().skip(5)

Запрос пропустит первые 5 документов и вернет оставшиеся. Количество возвращаемых документов будет ограничено размером итератора по умолчанию (50 в Robo 3T).

sort():

db.collection.find().sort({index: -1})

Запрос отсортирует документы по полю index в убывающем порядке. Замена -1 на 1 осуществит сортировку по возрастанию.

> Без sort() документы сортируются по умолчанию по полю _id в возрастающем порядке.

Комбинирование методов

Возможны сложности при комбинировании методов. Например, db.collection.find().sort({index: -1}).limit(5).skip(10) сначала отсортирует документы по полю index в убывающем порядке, затем пропустит первые 10 и вернет следующие 5.

Методы count, limit, skip и sort — простые, но мощные инструменты для работы с данными в MongoDB. Понимание их функциональности и возможности комбинирования упрощает обработку больших объемов данных.

Что будем искать? Например,программа