Zdá se, že problém je s _id
používáte pro $group. Měli byste seskupit podle $day
spíše než null
, pokud chcete výsledky seskupit podle dne. Zkuste toto:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
To znamená, že nemusíte ukládat den a hodinu jako samostatné prvky v dokumentu. Jsou to nadbytečná data. Můžete extrahovat day
a hour
od date
pole v agregačním dotazu pomocí Date Aggregation
operátory.