public function group($collectionName, $keys, $initial, $reduce, $options = [])
{
if (!$reduce instanceof Javascript) {
$reduce = new Javascript((string) $reduce);
}
if (isset($options['condition'])) {
$options['cond'] = $this->buildCondition($options['condition']);
unset($options['condition']);
}
if (isset($options['finalize'])) {
if (!$options['finalize'] instanceof Javascript) {
$options['finalize'] = new Javascript((string) $options['finalize']);
}
}
if (isset($options['keyf'])) {
$options['$keyf'] = $options['keyf'];
unset($options['keyf']);
}
if (isset($options['$keyf'])) {
if (!$options['$keyf'] instanceof Javascript) {
$options['$keyf'] = new Javascript((string) $options['$keyf']);
}
}
$document = ['group' => array_merge(['ns' => $collectionName, 'key' => $keys, 'initial' => $initial, '$reduce' => $reduce], $options)];
return $document;
}