sql >> Base de Datos >  >> NoSQL >> MongoDB

Ejecute map reduce para todas las claves en colecciones - mongodb

Usar un mapa/reducir para esa tarea simple es un poco como usar un mazo (comparativamente lento) para romper una nuez. El marco de agregación se inventó básicamente para este tipo de agregación simple (¡y puede hacer mucho más por usted!):

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

Dependiendo de su caso de uso, puede incluso omitir $out etapa y consumir los resultados directamente.

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

Tenga en cuenta que con colecciones muy grandes, lo más probable es que esto no sea adecuado, ya que puede llevar un tiempo (pero debería ser más rápido que una operación de mapa/reducción).

Para encontrar la cantidad de pedidos de un solo cliente, puede usar una consulta simple y usar el cursor.cuenta() método:

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