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