php解析mongo时间,MongoDB与PHP聚合 – 按日期分组

在MongoDB中使用PHP进行聚合操作时遇到日期排序不正确的问题,原始代码试图通过$dayOfYear进行排序,但结果不符合预期。解决方案是将年、月、日分别投影并分组,然后按 '_id.year', '_id.month', '_id.day' 进行排序,以实现日期的升序排列。更新后的代码能够正确地对日期进行排序并限制返回结果的数量为30条。
摘要由CSDN通过智能技术生成

我在MongoDB中使用

PHP聚合.代码如下:

$results = $c->aggregate(array(

array(

'$project' => array(

'day' => array('$dayOfYear' => '$executed')

),

),

array(

'$group' => array(

'_id' => array('day' => '$day'),

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

),

),

array(

'$sort' => array(

'_id' => 1

),

),

array(

'$limit' => 30

)

));

这个问题是,$dayOfYear没有正确排序,因为它排序2然后3然后345,346 ……我需要它是日期升序.所以,基本上不是简单地做$dayOfYear我需要像$year- $month- $dayOfMonth这样的东西.

不幸的是,这不起作用.有任何想法吗?

谢谢.

您可以将这些部分投影出来,然后对它们进行分组,以便您可以对整个日期进行分组:

$results = $c->aggregate(array(

array(

'$project' => array(

'year' => array('$year' => '$executed' ),

'month' => array('$month' => '$executed' ),

'day' => array('$dayOfMonth' => '$executed')

),

),

array(

'$group' => array(

'_id' => array('year' => '$year', 'month' => '$month', 'day' => '$day'),

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

),

),

array(

'$sort' => array(

'_id.year' => 1,

'_id.month' => 1,

'_id.day' => 1

),

),

array(

'$limit' => 30

)

));

正如你所说的那样,像你这样的东西可以帮你排序:$year- $month- $dayOfMonth.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值