MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Esegui la riduzione della mappa per tutte le chiavi nelle raccolte - mongodb

Usare una mappa/ridurre per quel semplice compito è un po' come usare una mazza (relativamente lenta) per rompere un dado. Il framework di aggregazione è stato fondamentalmente inventato per questo tipo di semplice aggregazione (e può fare molto di più per te!):

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

A seconda del tuo caso d'uso, puoi persino omettere $out mettere in scena e consumare direttamente i risultati.

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

Nota che con raccolte molto grandi, questo molto probabilmente non è adatto, poiché richiede un po' di tempo (ma dovrebbe comunque essere più veloce di un'operazione di mappatura/riduzione).

Per trovare il numero di ordini di un singolo cliente, puoi utilizzare una semplice query e utilizzare il cursor.count() metodo:

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