public group ( string $collectionName, $keys, array $initial, MongoDB\BSON\Javascript | string $reduce, array $options = [] ) : array | ||
$collectionName | string | |
$initial | array | Initial value of the aggregation counter object. |
$reduce | MongoDB\BSON\Javascript | string | function that takes two arguments (the current document and the aggregation to this point) and does the aggregation. Argument will be automatically cast to [[Javascript]]. |
$options | array | optional parameters to the group command. Valid options include: - condition - criteria for including a document in the aggregation. - finalize - function called once per unique key that takes the final output of the reduce function. |
Résultat | array | command document. |
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;
}