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