(PECL mongo >=0.9.2)
MongoCollection::group — Effecture une opération de regroupement
keys
     
     Les champs avec lesquels faire le regroupement. Si un tableau ou un objet non-code est passé, ce sera la clé utilisée pour grouper les résultats.
       1.0.4+: Si keys est une instance de
       MongoCode, keys
       sera considéré comme une fonction qui retourne la clé pour
       effectuer le regroupement (voir l'exemple ci-dessous sur le
       passage d'une fonction keys).  
      
initial
     
     Valeur initiales des compteurs d'agrégation.
reduce
     
     Fonction acceptant deux arguments (le document courant et l'agrégation à ce point) et effectue l'agrégation.
options
     
     Paramètres optionnels pour la commande de groupe. Les options accéptées sont:
"condition"
Critère pour inclure un document dans l'agrégation.
"finalize"
Fonction appelée une fois par clé unique qui prend le rendu final de la fonction de réduction.
Retourne un tableau contenant les résultats.
| Version | Description | 
|---|---|
| 1.2.11 | Lance une alerte de niveau E_DEPRECATEDlorsque
        le paramètreoptionsest de type scalar. | 
Exemple #1 Exemple avec MongoCollection::group()
Cet exemple regroupe des documents par catégorie et crée une liste de noms à l'intérieur des catégories
<?php
$collection->insert(array("category" => "fruit", "name" => "apple"));
$collection->insert(array("category" => "fruit", "name" => "peach"));
$collection->insert(array("category" => "fruit", "name" => "banana"));
$collection->insert(array("category" => "veggie", "name" => "corn"));
$collection->insert(array("category" => "veggie", "name" => "broccoli"));
$keys = array("category" => 1);
$initial = array("items" => array());
$reduce = "function (obj, prev) { prev.items.push(obj.name); }";
$g = $collection->group($keys, $initial, $reduce);
echo json_encode($g['retval']);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
[{"category":"fruit","items":["apple","peach","banana"]},{"category":"veggie","items":["corn","broccoli"]}]
Exemple #2 Exemple avec MongoCollection::group()
Cet exemple n'utilise aucune clé, donc chaque document sera dans son propre groupe. Il y a aussi une condition: seuls les documents qui correspondent à cette condition seront traités par la fonction de regroupement.
$collection->save(array("a" => 2));
$collection->save(array("b" => 5));
$collection->save(array("a" => 1));
// use all fields
$keys = array();
// set intial values
$initial = array("count" => 0);
// JavaScript function to perform
$reduce = "function (obj, prev) { prev.count++; }";
// only use documents where the "a" field is greater than 1
$condition = array("a" => array( '$gt' => 1));
$g = $collection->group($keys, $initial, $reduce, $condition);
var_dump($g);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
array(4) {
  ["retval"]=>
  array(1) {
    [0]=>
    array(1) {
      ["count"]=>
      float(1)
    }
  }
  ["count"]=>
  float(1)
  ["keys"]=>
  int(1)
  ["ok"]=>
  float(1)
}
Exemple #3 Passer une fonction keys
Si vous voulez grouper par quelque chose d'autre qu'un nom de champ, vous pouvez passer une fonction comme premier paramètre à la méthode MongoCollection::group() et elle sera exécutée sur chacun des documents. La valeur retournée de cette fonction sera utilisée comme valeur de regroupement.
Cet exemple montre comment regrouper par le numéro du champ, modulo 4.
<?php
$c->group(new MongoCode('function(doc) { return {mod : doc.num % 4}; }'),
     array("count" => 0),
     new MongoCode('function(current, total) { total.count++; }'));
?>