Mongodb聚合框架Aggregate - 时间戳转时间聚合分组统计实现

mongodb的聚合框架(aggregate)提供了很多修改器用来修改去获取IOSDate类型的字段的年、月、日、时、分、秒、等;同时mongodb也提供了相关的修改器去把IOSDate类型的时间转换为通常我们可以接受的时间格式;

  • $dayOfYear: 返回该日期是这一年的第几天。(全年366天)
  • $dayOfMonth: 返回该日期是这一个月的第几天。(1到31)
  • $dayOfWeek: 返回的是这个周的星期几。(1:星期日,7:星期六)
  • $year: 返回该日期的年份部分 $month: 返回该日期的月份部分(between 1and12.)
  • $week: 返回该日期是所在年的第几个星期(between 0and53)
  • $hour: 返回该日期的小时部分 $minute: 返回该日期的分钟部分
  • $second: 返回该日期的秒部分(以0到59之间的数字形式返回日期的第二部分,但可以是60来计算闰秒。)
  • $millisecond:返回该日期的毫秒部分(between 0and999.)
  • $dateToString: { $dateToString: { format: <formatString>, date: <dateExpression> } }

formatString:需要返回的日期式,日期格式通常为以:

 

   
%YYear (4 digits, zero padded)0000-9999
%mMonth (2 digits, zero padded)01-12
%dDay of Month (2 digits, zero padded)01-31
%HHour (2 digits, zero padded, 24-hour clock)00-23
%MMinute (2 digits, zero padded)00-59
%SSecond (2 digits, zero padded)00-60
%LMillisecond (3 digits, zero padded)000-999
%jDay of year (3 digits, zero padded)001-366
%wDay of week (1-Sunday, 7-Saturday)1-7
%UWeek of year (2 digits, zero padded)00-53
%%Percent Character as a Literal 

以下是案例:

date1Str: 转换时间格式比标准时间差了8小时,date2Str:转换时间正确。

db.test.aggregate(
   [
     {
       $project: {
          timestamp: 1,
          date1Str: {$dateToString: {format: "%Y-%m-%d %H:%M:%S:%L", date:{"$add":[new Date(0),"$timestamp"]}}},
          date2Str: {$dateToString: {format: "%Y-%m-%d %H:%M:%S:%L", date:{"$add":[new Date(0),"$timestamp",28800000]}}}
       }
     }
   ]
)

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值