mongodb按时间段分组,并统计组内数据个数

  1. 1. 概述
  2. 2. 表达式
    1. 2.1 $project数据转换
    2. 2.2 $group分组并计算组内数据个数

mongodb按时间段分组,并统计组内数据个数

1. 概述

mongodb统计数据每天,每周,每月,每年的数据量(求和,平均值,最大值,最小值)。

2. 表达式

使用mongodb的聚合操作进行统计。
$dateToString是把时间戳转换为时间字符串的函数,可用通过format控制时间格式。
如果是同一天的数据,转换之后的data将会相同,然后再通过group分组,将相同时间段的数据合并,就可以对时间段内数据进行统计。

2.1 $project数据转换

{
    "$project": {
        "_id": 1,
        "timestamp": 1,
        "time": {
            "$dateToString": {
                "format": "%H:%M:%S:%L",
                "date": {
                    "$toDate": {
                        "$multiply": [
                            "$timestamp",
                            1000
                        ]
                    }
                },
                "timezone": "+08:00"
            }
        },
        "date": {
            "$dateToString": {
                "format": "%Y-%m-%d",
                "date": {
                    "$toDate": {
                        "$multiply": [
                            "$timestamp",
                            1000
                        ]
                    }
                },
                "timezone": "+08:00"
            }
        }
    }
}

转换之后数据

数据转换

2.2 $group分组并计算组内数据个数

{
    "$group": {
        "_id": "$date",
        "count": {
            "$sum": 1.0
        }
    }
}

分组之后数据

分组统计


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wind.kaisa@gmail.com

💰

×

Help us with donation