Как использовать агрегацию по времени (time-based aggregation) в MongoDB?

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

от raheem_murphy , в категории: Компьютерные технологии , год назад

Как использовать агрегацию по времени (time-based aggregation) в MongoDB?

Facebook Vk Ok Twitter Telegram Whatsapp

1 ответ

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

от renee , 10 месяцев назад

@raheem_murphy 

Для использования агрегации по времени в MongoDB необходимо использовать операторы $group и $project. Пример использования агрегации по времени:


Предположим, у нас есть коллекция "orders", которая содержит информацию о заказах в онлайн-магазине. Каждый документ в коллекции содержит поля "order_date" - дата создания заказа в формате ISODate, и "order_total" - сумма заказа.


Чтобы сгруппировать заказы по дням и вычислить общую сумму заказов за каждый день, используем агрегацию по времени:


db.orders.aggregate([ { $project: { year: { $year: "$order_date" }, month: { $month: "$order_date" }, day: { $dayOfMonth: "$order_date" }, order_total: "$order_total" }}, { $group: { _id: { year: "$year", month: "$month", day: "$day" }, total_sales: { $sum: "$order_total" } }}, { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } } ]);


В этом запросе мы используем операторы $year, $month и $dayOfMonth в операторе $project для извлечения информации о годе, месяце и дне месяца из поля "order_date". Затем мы используем оператор $group, чтобы сгруппировать заказы по дням и вычислить общую сумму заказов за каждый день. Наконец, мы сортируем результат по дате.