MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Cadre d'agrégation MongoDB - Comment faire correspondre par plage de dates, grouper par jours et moyenne de retour pour chaque jour ?

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.