MongoCollection::group
(PECL mongo >=0.9.2)
MongoCollection::group — Effecture une opération de regroupement
Description
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
keysest une instance de MongoCode,keyssera considéré comme une fonction qui retourne la clé pour effectuer le regroupement (voir l'exemple ci-dessous sur le passage d'une fonctionkeys). -
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.
Historique
| Version | Description |
|---|---|
| 1.2.11 |
Lance une alerte de niveau E_DEPRECATED lorsque
le paramètre options est de type scalar.
|
Exemples
Exemple #1 Exemple avec MongoCollection::group()
<?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']);
?>$collection->save(array("a" => 2));
$collection->save(array("b" => 5));
$collection->save(array("a" => 1));
// Utilisation de tous les champs
$keys = array();
// Défini les valeurs initiales
$initial = array("count" => 0);
// Fonction JavaScript pour traitement
$reduce = "function (obj, prev) { prev.count++; }";
// N'utilisez que les documents où le champ "a" est plus grand que 1
$condition = array('condition' => array("a" => array( '$gt' => 1)));
$g = $collection->group($keys, $initial, $reduce, $condition);
var_dump($g);
?><?php
$c->group(new MongoCode('function(doc) { return {mod : doc.num % 4}; }'),
array("count" => 0),
new MongoCode('function(current, total) { total.count++; }'));
?>