MongoCollection::getName
MongoCollection::insert
MongoCollection
PHP Manual

# MongoCollection::group

(PECL mongo >=0.9.2)

MongoCollection::group — Effecture une opération de regroupement

### Description

public array MongoCollection::group ( mixed `$keys` , array `$initial` , MongoCode `$reduce` [, array `$condition` = array() ] )

### Liste de paramètres

`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.

### Valeurs de retour

Retourne un tableau contenant les résultats.

### Exemples

Exemple #1 Exemple avec MongoCollection::group()

`<?php
$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 #2 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++; }'));
?>`

MongoCollection::getName
MongoCollection::insert
MongoCollection
PHP Manual