Das Problem scheint bei der _id
zu liegen Sie verwenden für $group. Sie sollten nach $day
gruppieren statt null
, wenn Sie die Ergebnisse nach Tag gruppieren möchten. Versuchen Sie Folgendes:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Allerdings müssen Sie den Tag und die Uhrzeit nicht als separate Elemente im Dokument speichern. Es sind redundante Daten. Sie können den day
extrahieren und hour
ab date
Feld in der Aggregationsabfrage unter Verwendung der Date Aggregation
Betreiber.