Het probleem lijkt te zijn met de _id
u gebruikt voor $group. Je moet groeperen op $day
in plaats van null
, als u de resultaten per dag wilt groeperen. Probeer dit:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Dat gezegd hebbende, hoeft u de dag en het uur niet als afzonderlijke elementen in het document op te slaan. Het zijn overbodige gegevens. U kunt de day
. extraheren en hour
vanaf date
veld in de aggregatiequery met behulp van de Date Aggregation
operators.