求解决,使用Spring-data-mongodb写出根据日期时间(按日、周、月、年)进行分组统计数据量,急~在线等

2025-04-17 17:46:43
推荐回答(1个)
回答1:

最近在做mongoDB的统计, 有需求是

按照一天24小时分组,

按照一周的7天分组,

按照一个月30天分组,

按照一年12个月分组统计,

mongodb 入库的时间字段是 2016-12-12 这样的字符串格式,并没有用mongodb的格式UTC,有时差问题.

思路是,只能通过mongodb的 管道 进行层层筛选, 分组的时候使用mongodb的自带函数,$substr 进行截取进行分组.

db.advPlaysDetails.aggregate([
{
$match: {advId:"1"}
},
{
$match: {playTime:{$gt: "2016-11-29",$lt:"2016-11-31" }}
},
{
$project :{new_time_stamp :{$substr :["$playTime",11,2]},"_id":0,playTimes:1,}

},
{
$group : {_id :"$new_time_stamp", playTimes : {$sum : "$playTimes"}}

}

])
$substr 第一个参数 要切割的字段, 第二个参数:从第几个字段开始切, 第三个字段:切几个.

至于统计出来, 比如,一周里,可能有一两天根本就没有数据这种情况,可以实现弄一个7天的集合或者数组,里边数据默认为0 或其他初始值. 至于一个月多少天,不能定死30,应该用Calendar自己去算