El problema parece estar en el _id
está utilizando para $ grupo. Debes agrupar por $day
en lugar de null
, si desea agrupar los resultados por día. Prueba esto:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Dicho esto, no necesita almacenar el día y la hora como elementos separados en el documento. Son datos redundantes. Puedes extraer el day
y hour
desde date
en la consulta de agregación mediante Date Aggregation
operadores.