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 и вывести анализ данных на новый уровень.