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.