Агрегационный pipeline в MongoDB обрабатывает документы через серию этапов, где каждый этап трансформирует данные. Чтобы вычислить среднюю зарплату по отделам и отсортировать результаты, мы используем два этапа pipeline.
$group — группирует документы по указанному полю и применяет выражения аккумуляторов$sort — упорядочивает результирующие документы по указанному полюdb.employees.aggregate([
{
$group: {
_id: "$department",
avgSalary: { $avg: "$salary" }
}
},
{
$sort: { avgSalary: -1 }
}
])
_id: "$department" — определяет ключ группировки, так что один документ создаётся для каждого уникального отдела$avg: "$salary" — вычисляет среднюю зарплату всех сотрудников в каждой группе$sort: { avgSalary: -1 } — сортирует результаты в порядке убывания (-1), размещая наибольшую зарплату в начале[
{ _id: "Engineering", avgSalary: 95000 },
{ _id: "Marketing", avgSalary: 72000 },
{ _id: "HR", avgSalary: 58000 }
]
Это двухэтапный pipeline — сначала группируем, потом сортируем. Порядок этапов имеет значение, потому что $sort работает с уже сгруппированными результатами, а не с исходными документами.
На стадии $group конвейера агрегации с _id: "$department" создаётся один выходной документ для каждого уникального значения department, найденного в коллекции.
Новый — ещё не проверен сообществом
Вы