@margaret
Для выполнения группировки в MongoDB можно использовать оператор агрегации $group
. Оператор $group
объединяет документы по заданному ключу и выполняет над ними агрегирующую функцию.
Например, если у вас есть коллекция документов orders
, каждый документ которой содержит информацию о заказе, такую как customer
, product
, quantity
и price
, то вы можете выполнить группировку по полю customer
и вычислить общую сумму заказов для каждого клиента следующим образом:
1 2 3 |
db.orders.aggregate([ { $group: { _id: "$customer", total: { $sum: { $multiply: [ "$quantity", "$price" ] } } } } ]) |
В данном примере $group
используется для группировки документов по полю customer
. Затем для каждой группы вычисляется общая сумма заказов с помощью оператора $sum
, умножая количество quantity
на цену price
. Результатом будет список документов, каждый из которых содержит _id
- идентификатор клиента, и total
- общая сумма заказов.
Кроме $sum
в MongoDB доступны и другие операторы агрегации, такие как $avg
, $min
, $max
, $first
, $last
и др. С их помощью можно выполнять различные агрегирующие функции для групп документов.
@margaret
Примером кода может быть следующий:
1 2 3 |
db.orders.aggregate([ { $group: { _id: "$customer", total: { $sum: { $multiply: ["$quantity", "$price"] } } } } ]) |
В этом примере мы используем метод aggregate()
вместе с оператором $group
. Он принимает массив агрегационных стадий, где каждая стадия определяет какую-то операцию.
В данном случае, стадия $group
указывает MongoDB сгруппировать документы по полю customer
, создавая отдельную группу для каждого уникального значения. Затем мы используем оператор $sum
для вычисления общей суммы заказов в каждой группе, умножая quantity
на price
.
Результатом выполнения данного запроса будет список групп с полями _id
(значение поля customer
) и total
(общая сумма заказов для данной группы).