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
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 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++; }')); ?>