Database Reference
In-Depth Information
$initial=array('Anz'=>0,items=>array());
$reduceF='function(obj,prev)
{prev.anzahl+=1;prev.items.push(obj.name)}';
Demnach sieht das Ergebnis dann so aus: 'adres-
se.stadt'=>'Berlin','anzahl'=>2,'items'=>array(„Meier“,“Mueller“) usw. Die Anzahl
der ausgegebenen Keys ist allerdings auf 10 000 begrenzt. Wenn mehr als diese Anzahl be-
nötigt wird, dann muss mit mapreduce() gearbeitet werden.
Map/reduce
Map/reduce ist im Kapitel zu CouchDB bereits beschrieben worden, daher hier nur eine
kurze Erläuterung. Der Vorgang teilt sich in zwei Phasen auf. Während der map -Phase wer-
den anhand der Funktion Key-Value-Paare gebildet. In der reduce -Phase werden diese Paa-
re aggregiert. Wie CouchDB nutzt auch MongoDB JavaScript als Sprache für die map/
reduce -Funktionen. Map/reduce -Aufrufe werden als Kommando direkt an die Datenbank
geschickt, das Ergebnis $ret enthält unter $ret[„result“] eine Referenz auf eine temporäre
Collection, die mit der Funktion selectCollection() angesprochen und auf die die Funktion
find() angewandt wird:
$map= 'function() {emit(this.adresse.stadt,1);}';
$reduce= ‚function(key,value) {var anzahl=0;
for(index in value) {anzahl+=value[index];}
return anzahl;}';
$db=$mongo->phpmag;
$ret=$db->command(array("mapreduce"=>"autohaus",
"map"=>$map,
"reduce"=>$reduce,
));
$resultA=$db->selectCollection($ret["result"])->find();
foreach($resultA as $result) {
print_r($result);
}
Search WWH ::




Custom Search