MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Map Reduce für alle Schlüssel in Sammlungen ausführen - mongodb

Die Verwendung einer Map/Reduce für diese einfache Aufgabe ist ein bisschen wie die Verwendung eines (vergleichsweise langsamen) Vorschlaghammers, um eine Nuss zu knacken. Das Aggregations-Framework wurde im Grunde für diese Art der einfachen Aggregation erfunden (und kann noch viel mehr für Sie tun!):

db.order.aggregate([
    { "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
    { "$out": "order_total"}
])

Abhängig von Ihrem Anwendungsfall können Sie sogar das $out weglassen inszenieren und die Ergebnisse direkt konsumieren.

> db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
{ "_id" : "b", "orders" : 2 }
{ "_id" : "a", "orders" : 3 }

Beachten Sie, dass dies bei sehr großen Sammlungen höchstwahrscheinlich nicht geeignet ist, da es eine Weile dauern kann (aber es sollte immer noch schneller sein als eine Map/Reduce-Operation).

Um die Anzahl der Bestellungen eines einzelnen Kunden zu ermitteln, können Sie eine einfache Abfrage verwenden und den cursor.count() Methode:

> db.orders.find({ "customer": "a" }).count()
3