/**
* @link http://www.php.net/manual/en/mongocollection.aggregate.php
* @param array $pipeline
* @param array $op
* @return array
*/
public function aggregate(array $pipeline, array $op = [])
{
if (!TypeConverter::isNumericArray($pipeline)) {
$pipeline = [];
$options = [];
$i = 0;
foreach (func_get_args() as $operator) {
$i++;
if (!is_array($operator)) {
trigger_error("Argument {$i} is not an array", E_WARNING);
return;
}
$pipeline[] = $operator;
}
} else {
$options = $op;
}
$command = ['aggregate' => $this->name, 'pipeline' => $pipeline];
$command += $options;
return $this->db->command($command, [], $hash);
}