Освоение агрегации MongoDB: раскрытие возможностей манипулирования данными

MongoDB, популярная база данных NoSQL, предлагает мощную функцию, называемую Aggregation Framework. В этом сообщении блога мы углубимся в эту тему и рассмотрим различные методы использования платформы агрегирования для манипулирования данными. Итак, хватайте свой любимый напиток и начнем!

Метод 1: $match – фильтрация документов

Один из основных методов агрегации MongoDB — $match. Он позволяет фильтровать документы по конкретным условиям. Например:

db.collection.aggregate([
  { $match: { age: { $gte: 18 } } }
]);

Этот запрос позволит получить все документы, в которых поле «возраст» больше или равно 18.

Метод 2: $group – группировка и агрегирование данных

Метод $groupиспользуется для группировки документов на основе определенного поля и выполнения операций агрегирования сгруппированных данных. Например:

db.collection.aggregate([
  { $group: { _id: "$category", total: { $sum: "$price" } } }
]);

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

Метод 3: $project – формирование выходных данных

С помощью метода $projectвы можете изменить форму выходного документа, включая или исключая определенные поля или добавляя вычисляемые поля. Вот пример:

db.collection.aggregate([
  { $project: { name: 1, discountPrice: { $multiply: ["$price", 0.9] } } }
]);

Этот запрос проецирует только поле «имя» и включает вычисляемое поле «discountPrice», которое применяет скидку 10 % к исходному полю «цена».

Метод 4: $sort – сортировка документов

Метод $sortпозволяет сортировать документы по одному или нескольким полям. Вот фрагмент кода:

db.collection.aggregate([
  { $sort: { age: -1 } }
]);

Этот запрос сортирует документы в порядке убывания на основе поля «возраст».

Метод 5: $limit и $skip – разбиение на страницы

Чтобы реализовать нумерацию страниц в агрегации MongoDB, вы можете использовать методы $limitи $skip. Например:

db.collection.aggregate([
  { $skip: 10 },
  { $limit: 5 }
]);

Этот запрос пропускает первые 10 документов и возвращает следующие 5 документов.

Метод 6: $unwind – разнесение массивов

Метод $unwindиспользуется для разделения поля массива на несколько документов. Взгляните на этот пример:

db.collection.aggregate([
  { $unwind: "$tags" }
]);

Этот запрос создает новый документ для каждого элемента в поле массива «теги».

В этом сообщении блога мы рассмотрели различные методы MongoDB Aggregation Framework, включая фильтрацию, группировку, формирование выходных данных, сортировку, нумерацию страниц и разбиение массивов. Эти методы обеспечивают огромную гибкость для выполнения сложных манипуляций с данными и анализа. Освоив эти методы, вы сможете раскрыть всю мощь платформы агрегации MongoDB и вывести анализ данных на новый уровень.