MongoDB在许多字段上按日期汇总

时间:2020-06-19 18:30:10

标签: mongodb mongoose aggregation-framework aggregate

我有以下模式(缩写!)

{
    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(一月)的所有文档的总和,第二项是二月等的总和。

关于如何进行的任何建议?奖励积分:如果没有文档与当前月份匹配,则数组应为0。要获得更多的奖励积分:我如何在类型=时间的每个自定义字段中为值的总和创建一个附加数组。

最终希望通过Charts.JS生成一个图形,该图形显示每个时间类别的每月总和。

0 个答案:

没有答案