MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

agrupe por dia/mês e tire a média da classificação naquele dia/mês no mongo


Para agrupar documentos por dia/mês e retornar a chave do mês em sua saída, você precisa primeiro $project os campos-chave para formatos apropriados usando a Data operadores, em particular o $ dateToString e $month operadores.

Isso pode ser feito em um $projeto estágio anterior ao $group passo, mas não é necessário, pois o $grupo o pipeline acomoda principalmente o acumulador operadores.

No $group pipeline, você pode agrupar os documentos pela chave de data formatada, agregar usando o $avg e retorne o mês como um número inteiro do pipeline anterior usando $first operador de acumulador.

A execução do seguinte pipeline de agregação deve fornecer o resultado desejado:
db.collection.aggregate([
  { "$group": {
    "_id": { 
        "$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" } 
    },
    "average": { "$avg": "$rating" },
    "month": { "$first": { "$month": "$ceatedAt" } },
  } }
])