sql >> Base de Datos >  >> NoSQL >> MongoDB

agrupar por día/mes y tomar el promedio de calificación en ese día/mes en mongo

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" } },
  } }
])