mongoose 按日期分组查询问题

表的结构:

{
        "point": "625fa3ccd3ebc0de0f1837d9",
        "_id": "625fb7ad9c9d58cdc664fde5",
        "create": "2022-04-20T07:35:09.203Z",
        "update": "2022-04-20T07:35:09.203Z",
        "__v": 0
    }

现在需要按照时间,每分钟统计次数,得到如下 aggregate:

this.reportModel.aggregate([
                {$match: {point:data[0]._id,}},
                {$project: {
                    date1Str: {$dateToString: {format: "%Y-%m-%d %H:%M", date:"$create",timezone:"+08:00"}},
                 }},
                {$group: {_id: "$date1Str", total: {$sum: 1}}},
                {$sort:{_id:1}}
            ]).exec()

查出来的数据,只统计了有数据的日期

[
        {
            "_id": "2022-04-20 14:10",
            "total": 8
        },
        {
            "_id": "2022-04-20 14:11",
            "total": 1
        },
        {
            "_id": "2022-04-20 14:19",
            "total": 1
        },
        {
            "_id": "2022-04-20 14:20",
            "total": 6
        },
        {
            "_id": "2022-04-20 14:25",
            "total": 8
        },
        {
            "_id": "2022-04-20 15:16",
            "total": 1
        },
        {
            "_id": "2022-04-20 15:35",
            "total": 1
        }
    ]

如何实现没有数据的日期自动补 0 ,例如:

[
        {
            "_id": "2022-04-20 14:10",
            "total": 8
        },
        {
            "_id": "2022-04-20 14:11",
            "total": 0
        },
        {
            "_id": "2022-04-20 14:12",
            "total": 0
        },
        {
            "_id": "2022-04-20 14:11",
            "total": 1
        },
        ...

    ]
阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题