MongoDB Aggregate по дате по многим полям - PullRequest
0 голосов
/ 19 июня 2020

У меня следующая схема (сокращенно!)

{
    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, который показывает сумму за месяц для каждой категории времени.

...