Problemet verkar vara med _id
du använder för $group. Du bör gruppera efter $day
istället för null
, om du vill gruppera resultaten efter dag. Prova detta:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Som sagt, du behöver inte lagra dagen och timmen som separata element i dokumentet. Det är redundant data. Du kan extrahera day
och hour
från date
fältet i aggregeringsfrågan med Date Aggregation
operatörer.