Le problème semble être avec le _id
vous utilisez pour $group. Vous devez regrouper par $day
plutôt que null
, si vous souhaitez regrouper les résultats par jour. Essayez ceci :
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Cela dit, vous n'avez pas besoin de stocker le jour et l'heure en tant qu'éléments distincts dans le document. Ce sont des données redondantes. Vous pouvez extraire le day
et hour
à partir de date
champ dans la requête d'agrégation à l'aide de Date Aggregation
opérateurs.