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