У меня следующая схема (сокращенно!)
{
date: {
_id: false,
day: { type: Number },
month: { type: Number },
year: { type: Number },
},
flightTimes: {
_id: false,
totalTime: Number,
...
},
loggedTimes: {
_id: false,
P1: {
type: Number,
},
P2: {
type: Number,
},
...
},
customFields: [
{
_id: false,
value: String,
type: {
type: String,
enum: ["text", "number", "time", "yesno", "paragraph"],
required: true,
},
},
],
}
Я пытаюсь получить следующий результат, используя агрегацию, но не могу.
{
total: [10,20,30],
P1: [45, 55, 12],
P2: [0, 12, 15],
}
Где 1-й элемент в Общий массив - это сумма любых документов, где Месяц = 1 (январь), второй - это сумма за февраль и т.д. c.
Есть предложения, как действовать? Для бонусных баллов: в массиве должен быть 0, если за текущий месяц нет документов. Для получения дополнительных бонусных баллов: как я могу создать дополнительный массив для суммы значений в каждом настраиваемом поле, где type = time.
В конечном итоге я хочу создать график с Charts. JS, который показывает сумму за месяц для каждой категории времени.