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

Agrupar por día/mes/semana en el intervalo de fechas

Para agrupar semanalmente, ejecute la siguiente canalización que utiliza principalmente Operadores de agregación de fechas para extraer las partes de la fecha:

db.collection.aggregate([
    { 
        "$project": {
            "createdAtWeek": { "$week": "$createdAt" },
            "createdAtMonth": { "$month": "$createdAt" },
            "rating": 1
        }
    },
    {
         "$group": {
             "_id": "$createdAtWeek",
             "average": { "$avg": "$rating" },
             "month": { "$first": "$createdAtMonth" }
         }
    }
])

y para agregados mensuales, intercambie el $group tecla para usar el campo del mes creado:

db.collection.aggregate([
    { 
        "$project": {
            "createdAtWeek": { "$week": "$createdAt" },
            "createdAtMonth": { "$month": "$createdAt" },
            "rating": 1
        }
    },
    {
         "$group": {
             "_id": "$createdAtMonth",
             "average": { "$avg": "$rating" },
             "week": { "$first": "$createdAtWeek" }
         }
    }
])