At bruge et kort/reducere til den simple opgave er lidt som at bruge en (forholdsvis langsom) forhammer til at knække en nød. aggregeringsramme blev dybest set opfundet til denne form for simpel aggregering (og kan gøre meget mere for dig!):
db.order.aggregate([
{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
{ "$out": "order_total"}
])
Afhængigt af din use case kan du endda udelade $out
iscenesætte og forbruge resultaterne direkte.
> db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
{ "_id" : "b", "orders" : 2 }
{ "_id" : "a", "orders" : 3 }
Bemærk, at med meget store samlinger er dette højst sandsynligt ikke egnet, da det tager et stykke tid (men det bør stadig være hurtigere end en kort-/reducer-operation).
For at finde antallet af ordrer fra en enkelt kunde kan du bruge en simpel forespørgsel og bruge cursor.count() metode:
> db.orders.find({ "customer": "a" }).count()
3