Кто знает лучшее решение для группировки заказов по дате и итоговой сумме и подсчета по источникам. Конечно, я могу группировать по источникам, а затем я получаю только итоги только для этого источника, после чего я могу изменить результат, чтобы получить желаемый результат. Но я хотел бы знать, возможно ли это в одном простом $group
утверждении.
Например. ordersByApp = 1, ordersByWEB = 2
Коллекция заказов
{
_id: 'XCUZO0',
date: "2020-02-01T00:00:03.243Z"
total: 9.99,
source: 'APP'
},
{
_id: 'XCUZO1',
date: "2020-01-05T00:00:03.243Z"
total: 9.99,
source: 'WEB'
},
{
_id: 'XCUZO2',
date: "2020-01-02T00:00:03.243Z"
total: 9.99,
source: 'WEB'
}
Моя текущая агрегация
Order.aggregate([
{
$group: {
_id: {
month: { $month: "$date",
year: { $year: "$date" }
},
total: {
$sum: "$total"
}
}
}
])
Текущий результат
[
{
_id: { month: 01, year: 2020 },
total: 19.98
},
{
_id: { month: 02, year: 2020 },
total: 9.99
}
]
Желаемый результат, Как мне достичь ниже?
[
{
_id: { month: 01, year: 2020 },
total: 19.98,
countByApp: 1, <---
countByWEB: 0, <---
},
{
_id: { month: 02, year: 2020 },
total: 9.99,
countByWEB: 2, <---
countByAPP: 0 <---
}
]