MongoDB SELECCIONAR COUNT GROUP BY

Estoy jugando con MongoDB tratando de descubrir cómo hacer un simple

SELECT province, COUNT(*) FROM contest GROUP BY province 

Pero parece que no puedo resolverlo usando la función agregada. Puedo hacerlo usando una syntax grupal realmente extraña

 db.user.group({ "key": { "province": true }, "initial": { "count": 0 }, "reduce": function(obj, prev) { if (true != null) if (true instanceof Array) prev.count += true.length; else prev.count++; } }); 

¿Pero hay una manera más fácil / más rápida usando la función agregada?

Esta sería la forma más fácil de hacerlo usando aggregate :

 db.contest.aggregate([ {"$group" : {_id:"$province", count:{$sum:1}}} ]) 

Si necesita varias columnas para agrupar, siga este modelo. Aquí estoy realizando un conteo por status y type :

 db.BusinessProcess.aggregate( {"$group" : {_id : {status:"$status", type: "$type"}, count : { $sum : 1} } } ) 

Necesito alguna operación adicional basada en el resultado de la función de agregado. Finalmente, he encontrado una solución para la función de agregado y la operación basada en el resultado en MongoDB. Tengo una Request recostackción con request, source, status, requestDate campo request, source, status, requestDate .

Grupo de campo único por y cuenta:

 db.Request.aggregate([ {"$group" : {_id:"$source", count:{$sum:1}}} ]) 

Grupo de múltiples campos por y cuenta:

 db.Request.aggregate([ {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}} ]) 

Múltiples campos Agrupar por y contar con ordenar usando el campo:

 db.Request.aggregate([ {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}, {$sort:{"_id.source":1}} ]) 

Múltiples campos Agrupar y contar con Ordenar usando Recuento:

 db.Request.aggregate([ {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}, {$sort:{"count":-1}} ]) 

Este tipo de consulta funcionó para mí:

  db.events.aggregate({$group: {_id : "$date", number: { $sum : 1} }} ) 

Ver http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/

Además, si necesita restringir la agrupación, puede usar:

 db.events.aggregate( {$match: {province: "ON"}}, {$group: {_id: "$date", number: {$sum: 1}}} )