public function aggregate($function, $column, $query = array())
{
if (0 == count($query)) {
$query = $this->compileWheres($this);
}
$pipeline = array();
if (count($query)) {
$pipeline[] = array('$match' => $query);
}
$pipeline[] = array('$group' => array('_id' => 0, $function => array('$' . $function => '$' . $column)));
$result = $this->connection->{$this->collection}->aggregate($pipeline);
if (1 == (int) $result['ok'] and isset($result['result'][0][$function])) {
return $result['result'][0][$function];
}
return 0;
}