mongoDB 按照时间字段分组 【24小时,周,月,年】

版权声明:转载请附带本文地址 https://blog.csdn.net/liuyifeng1920/article/details/53607975

最近在做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自己去算.



猜你喜欢

转载自blog.csdn.net/liuyifeng1920/article/details/53607975