MongoCollection::group

(PECL mongo >=0.9.2)

MongoCollection::groupEffecture une opération de regroupement

Description

public array MongoCollection::group ( mixed $keys , array $initial , MongoCode $reduce [, array $options = 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.

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

?>
LoadingChargement en cours