$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.