Как сделать группировку в mongodb?

Пользователь

от margaret , в категории: SQL , 2 года назад

Как сделать группировку в mongodb?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cayla , 2 года назад

@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 и др. С их помощью можно выполнять различные агрегирующие функции для групп документов.

Пользователь

от roxanne.hauck , год назад

@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 (общая сумма заказов для данной группы).