微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB与PHP聚合 – 按日期分组

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐