Para agrupar documentos por día/mes y devolver la clave del mes en su salida, primero debe $project
los campos clave a los formatos apropiados usando la Fecha
operadores, en particular $dateToString
y $month
operadores.
Esto se puede hacer en un $project
etapa previa al $group
paso pero no es necesario ya que el $group
La canalización admite principalmente el acumulador
operadores.
En el anterior $group
tubería, puede agrupar los documentos por la clave de fecha formateada, agregar usando el $avg
y devuelve el mes como un número entero de la tubería anterior usando $first
operador acumulador.
Ejecutar la siguiente canalización de agregación debería darte el resultado deseado:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])