Среда агрегации MongoDB — это мощный инструмент для обработки и анализа данных, хранящихся в вашей базе данных MongoDB. В этом руководстве мы рассмотрим различные методы использования платформы агрегации, сопровождаемые примерами кода, которые помогут вам овладеть искусством агрегации данных в MongoDB.
- Соответствие.
На этапе$match
документы фильтруются по заданным критериям. Он похож на методfind()
в MongoDB.
Пример:
db.collection.aggregate([
{ $match: { status: "active" } }
])
- Группировка.
На этапе$group
документы группируются на основе указанного ключа и к сгруппированным данным применяются различные агрегатные функции.
Пример:
db.collection.aggregate([
{ $group: { _id: "$category", count: { $sum: 1 } } }
])
- Проект:
Этап$project
позволяет изменять форму документов, создавать новые поля или исключать поля из набора результатов.
Пример:
db.collection.aggregate([
{ $project: { name: 1, price: 1, discountPrice: { $subtract: ["$price", "$discount"] } } }
])
- Сортировка.
На этапе$sort
документы в конвейере сортируются на основе указанного поля.
Пример:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
- Ограничить и пропустить.
Этапы$limit
и$skip
помогают контролировать количество возвращаемых документов и включать нумерацию страниц.
Пример:
db.collection.aggregate([
{ $skip: 10 },
{ $limit: 5 }
])
- Раскрытие:
На этапе$unwind
поле массива деконструируется из входных документов и выводится по одному документу для каждого элемента.
Пример:
db.collection.aggregate([
{ $unwind: "$tags" }
])
- Поиск:
На этапе$lookup
выполняется левое внешнее соединение между двумя коллекциями и объединяются совпадающие документы в один набор результатов.
Пример:
db.collection.aggregate([
{
$lookup: {
from: "orders",
localField: "userId",
foreignField: "userId",
as: "orders"
}
}
])
- Фасет.
Этап$facet
позволяет запускать несколько конвейеров в одном конвейере, генерируя несколько наборов результатов.
Пример:
db.collection.aggregate([
{
$facet: {
categoryCount: [
{ $group: { _id: "$category", count: { $sum: 1 } } }
],
priceRange: [
{ $bucket: { boundaries: [0, 100, 500, 1000], default: "Other", output: { count: { $sum: 1 } } } }
]
}
}
])
В этом руководстве мы рассмотрели несколько основных методов использования платформы агрегации MongoDB, приведя примеры кода для каждого метода. Овладев этими методами агрегирования, вы сможете эффективно обрабатывать и анализировать данные MongoDB, чтобы получать ценную информацию. Поэкспериментируйте с этими методами и изучите документацию MongoDB, чтобы раскрыть весь потенциал агрегирования данных в MongoDB.