Database Reference
In-Depth Information
>sort(array('adresse.plz'=>1)) liefert dann die Autohäuser Nr. 3-7 in aufsteigender Rei-
henfolge der Postleitzahl.
Filter in MongoDB
('name'=>'Meier') Name='Meier'
('plz'=>array('$gt'=>20000)) plz>20000
('markenA'=>array('$in'=>array('VW'))) VW in markenA
('markenA'=>array('$size'=>1)) nur eine Marke
Group
Ein weiteres wichtiges Feature ist das Gruppieren von Ergebnissen anhand von Feldern.
Was in MySQL ein group by ist, bedeutet in MongoDB ein wenig mehr Arbeit, ist aber
auch leistungsfähiger. Die group() -Funktion von MongoDB besteht aus drei Parametern:
keys ist ein Array von Feldnamen, anhand derer die Gruppierung stattfinden soll, initial ist
der Startwert der Aggregation, und reduce ist die Funktion zum Aggregieren der Werte:
$keys=array('adresse.stadt'=>true);
$initial=array('anzahl'=>0);
$reduceF='function(obj,prev)
{prev.anzahl+=1}';
$ret=$collection->group($keys,$initial,$reduceF);
Der Return-Wert $ret liefert ein Array mit mehreren Keys. Mit $ret[‚retval'] bekommen
wir das Ergebnis der Gruppierung als Array mit den Keys, die wir in $keys definiert haben,
und den Werten von $initial pro Gruppierung. Nehmen wir an, wir haben zwei Autohäuser
in Berlin und drei außerhalb, dann würde das Ergebnis so aussehen:
'adresse.stadt'=>'Berlin', 'anzahl'=>2
'adresse.stadt'=>'Hannover', 'amzahl'=>1
'adresse.stadt'=>'Muenchen', 'anzahl ‚=>2
Die Reduce-Funktion ist aber nicht nur auf das Zusammenzählen von Werten beschränkt,
auch die Dokumente selbst können übergeben werden. Ändern wir zwei Zeilen:
Search WWH ::




Custom Search