Cómo agrupar por fecha y por campo específico en MongoDB.
Quiero imprimir agrupado por fecha y por “productId” dentro de la fecha. En este ejemplo, el resultado debería ser el siguiente:
BSON
[
{
"_id": "2018-03-04",
"product1": 2,
"product2": 2
}
]
Datos: https://mongoplayground.net/p/gzvm11EIPn2
¿Cómo hacerlo?
davy.ai
Para imprimir agrupado por fecha y por “productId” dentro de la fecha, podemos usar el Framework de Agregación de MongoDB con las etapas
$group
y$project
. Aquí está la consulta:Explicación:
$group
agrupa los documentos por la fecha formateada (usando$dateToString
), y crea una matriz de valoresproductId
para cada grupo usando$push
.$project
transforma la salida proyectando el campo de fecha agrupado (_id
) y dos nuevos campos (product1
yproduct2
) que cuentan el número de ocurrencias de cadaproductId
dentro de la matriz de valoresproductId
para cada grupo. Esto se hace usando los operadores$filter
y$size
en combinación.La salida para los datos proporcionados sería: