J'ai besoin de comprendre une fonction MongoCollection-> group(). manuel PHP pour le groupe() indique ce qui suit:Plusieurs push avec reduce() dans PHP 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']);
?>
avec un tableau de résultat similaire à:
[{"category":"fruit","items":["apple","peach","banana"]},{"category":"veggie","items":["corn","broccoli"]}]
maintenant, je vois que la fonction MongoCode réduire() pousse le nom de l'élément dans la tableau de résultats. Mais que faire si je veux pousser un autre champ en plus du nom, c'est-à-dire couleur du fruit?
fondamentalement, ce que je besoin est d'avoir une sortie comme ceci:
[{"category":"fruit","items":[["apple", "red"],["peach", "peach"],["banana", "yellow"]]},{"category":"veggie","items":[["corn", "yellow"],["broccoli", "green"]]}]
donc je pense que je devrais pousser() différemment d'une certaine manière ... comment exactement? Je ne trouve pas la bonne syntaxe nulle part.
merci à l'avance et désolé pour mon pauvre anglais :-)
Francesco
merci @rajesh. Je l'ai élaboré et posté une solution. – godzillante