Wydaje się, że problem dotyczy _id
używasz dla $group. Grupuj według $day
zamiast null
, jeśli chcesz pogrupować wyniki według dnia. Spróbuj tego:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
To powiedziawszy, nie musisz przechowywać dnia i godziny jako oddzielnych elementów w dokumencie. To nadmiarowe dane. Możesz wyodrębnić day
i hour
od date
pole w zapytaniu agregującym przy użyciu Date Aggregation
operatorów.