Описание полезных методов курсора 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. Понимание их функциональности и возможности комбинирования упрощает обработку больших объемов данных.