数据按年和月分组。如何获得该特定月份的价值?

时间:2019-01-15 10:27:59

标签: mongodb mongodb-query

我目前正在尝试按年份(然后是月份)组织数据,并查看该月的“总票价”。我已经按年和月对数据进行了分组,但是我不知道如何获取该月的“总票价”。

我当前的群组查询如下:

{
    $group: {
        _id : "$year", month: { $addToSet: "$month" },
        "totalFare" : { "$sum": "$fare"}
    }
}

对数据进行排序,如this

如您所见,totalFare显示的是一年的票价,而不是月份的票价。我也尝试过使用$ addToSet函数来添加总票价,但是当我尝试这样做时却遇到了错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

再花一个小时。我设法找到了解决方案。我需要事先添加另一个组来按年和月组织数据,然后使用另一个组来格式化结果。

{
    $group: {
        '_id': {
            "month": "$month",
            "year": "$year",
        },
        "totalFare" : { "$sum": "$fare"}
    }
},
{
    $group: {
        _id : "$_id.year", 
        month: { 
            "$addToSet": {
                "monthName": "$_id.month",
                "totalFare": "$totalFare"
            }
        }
    }
}

这提供了以下output

希望这对遇到类似问题的人有用!