unwind two results fields mongodb group-by

two - project mongodb



MongoDB SELECCIONAR COUNT GROUP BY (5)

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 sintaxis 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?


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

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


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

db.contest.aggregate([ {"$group" : {_id:"$province", 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 recopilació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}} ])


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} } } )