MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

raggruppa per giorno/mese e prendi la media della valutazione di quel giorno/mese in mongo

Per raggruppare i documenti per giorno/mese e restituire la chiave del mese nell'output, devi prima $project i campi chiave per i formati appropriati utilizzando la Data operatori, in particolare $dateToString e $month operatori.

Questo può essere fatto in un $project fase precedente al $group passaggio ma non necessario poiché $group pipeline ospita principalmente l'accumulatore operatori.

Nel precedente $group pipeline, è possibile raggruppare i documenti in base alla chiave della data formattata, aggregarli utilizzando il $avg operatore e restituire il mese come intero dalla pipeline precedente utilizzando $first operatore accumulatore.

L'esecuzione della seguente pipeline di aggregazione dovrebbe darti il ​​risultato desiderato:

db.collection.aggregate([
  { "$group": {
    "_id": { 
        "$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" } 
    },
    "average": { "$avg": "$rating" },
    "month": { "$first": { "$month": "$ceatedAt" } },
  } }
])