public function testAggregate_Callable()
{
$this->collection->batchInsert(array(array('order' => 1, 'item' => 1, 'amount' => 110, 'category' => 1), array('order' => 1, 'item' => 2, 'amount' => 120, 'category' => 1), array('order' => 1, 'item' => 3, 'amount' => 130, 'category' => 2), array('order' => 2, 'item' => 1, 'amount' => 210, 'category' => 1), array('order' => 2, 'item' => 2, 'amount' => 220, 'category' => 1), array('order' => 2, 'item' => 3, 'amount' => 230, 'category' => 2)));
$result = $this->collection->aggregate(function ($pipeline) {
/* @var $pipeline \Sokil\Mongo\Pipeline */
$pipeline->match(array('category' => 1))->group(array('_id' => '$order', 'totalAmount' => array('$sum' => '$amount')))->sort(array('_id' => 1));
});
$this->assertEquals(array(0 => array('_id' => 1, 'totalAmount' => 230), 1 => array('_id' => 2, 'totalAmount' => 430)), $result);
}