php mongodb datetime,使用php进行mongodb日期聚合运算符时区调整

我正在尝试使用日期聚合运算符调整时区.

我需要在$signs.timestamp字段上进行-7小时调整.

这是我的代码:

function statsSignatures() {

$cursor = $this->db->collection->users->aggregate(

array('$unwind' => '$signs'),

array('$project'=>array(

'signs'=>'$signs',

'y'=>array('$year'=>'$signs.timestamp'),

'm'=>array('$month'=>'$signs.timestamp'),

'd'=>array('$dayOfMonth'=>'$signs.timestamp'),

'h'=>array('$hour'=>'$signs.timestamp')

)),

array('$group'=>array(

'_id'=>array('year'=>'$y','month'=>'$m','day'=>'$d','hour'=>'$h'),

'total'=>array('$sum'=>1)

)),

array('$sort'=>array(

'_id.year'=>1,

'_id.month'=>1,

'_id.day'=>1,

'_id.hour'=>1

))

);

return $cursor['result'];

}

我正在使用MongoDB版本2.6.3.

非常感谢 !

解决方法:

您可以使用带有$subtract运算符的$project对Date字段进行-7小时调整:

{

$project : {

ts : { $subtract : [ "$signs.timestamp", 25200000 ] }

}

}

// 25200000 == 1000 milis x 60 sec x 60 mins x 7 h

预计字段ts是偏移-7小时的日期.

编辑

这是使用$subtract时正确的PHP语法.

array(

'$project' => array(

'ts' => array('$subtract' => array('$signs.timestamp', 25200000))

)

)

Subtract接受一组值,而不是key =>值对.

标签:php,mongodb,timezone,date,aggregation-framework

来源: https://codeday.me/bug/20190830/1769669.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值