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

MongoDB Aggregation Framework - Come abbinare per intervallo di date, raggruppare per giorni e restituire la media per ogni giorno?

Il problema sembra essere con il _id stai usando per $group. Dovresti raggruppare per $day anziché null , se vuoi raggruppare i risultati per giorno. Prova questo:

PriceHourly.aggregate([
    { $match: { date: { $gt: start, $lt: end } } },
    { $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
    console.log(results); 
});

Detto questo, non è necessario memorizzare il giorno e l'ora come elementi separati nel documento. Sono dati ridondanti. Puoi estrarre il day e hour da date campo nella query di aggregazione utilizzando Date Aggregation operatori.