Masalahnya tampaknya dengan _id Anda gunakan untuk $group. Anda harus mengelompokkan menurut $day daripada null , jika Anda ingin mengelompokkan hasil menurut hari. Coba ini:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Karena itu, Anda tidak perlu menyimpan hari dan jam sebagai elemen terpisah dalam dokumen. Ini data yang berlebihan. Anda dapat mengekstrak day dan hour dari date bidang dalam kueri agregasi menggunakan Date Aggregation
operator.