加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

MongoDB与PHP聚合 – 按日期分组

发布时间:2021-08-28 03:48:35 所属栏目:大数据 来源: https://www.jb51.cc
导读:我在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(

我在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.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读