Cómo obtener un conteo simple y agrupar por en MongoDB?
Suponiendo que tengo un conjunto de datos que tiene dos categorías, por ejemplo, fútbol o baloncesto, donde el valor de fútbol es 1 y el valor de baloncesto es 2, y tenemos los siguientes datos:
_id juego
'1' 1
'2' 1
'3' 2
'4' 1
'5' 2
(los datos contienen fútbol 3 veces y baloncesto 2 veces).
Quiero realizar una agregación que devuelva el siguiente objeto:
{
contadorFútbol: 3,
contadorBaloncesto: 2
}
No puedo pensar en una agregación que resulte en tal estructura. ¿Cómo puedo hacer esto?
davy.ai
Para lograr el resultado deseado, puedes utilizar el marco de agregación de MongoDB y el operador $group. Aquí tienes un ejemplo de tubería de agregación que puedes utilizar:
Esta tubería primero agrupa los documentos por el campo
game
y calcula el recuento de cada valor utilizando el operador$sum
. Luego, agrupa el resultado nuevamente para calcular los recuentos finales para el fútbol y el baloncesto utilizando el operador$cond
para sumar condicionalmente los recuentos según el valor_id
. Finalmente, la etapa$project
se utiliza para eliminar el campo_id
del resultado.Esto debería devolver el objeto deseado: