Sự cố dường như là với _id bạn đang sử dụng cho $ group. Bạn nên nhóm theo $day thay vì null , nếu bạn muốn nhóm kết quả theo ngày. Hãy thử điều này:
PriceHourly.aggregate([
{ $match: { date: { $gt: start, $lt: end } } },
{ $group: { _id: "$day", price: { $avg: '$price' } } }
], function(err, results){
console.log(results);
});
Điều đó nói rằng, bạn không cần phải lưu trữ ngày và giờ dưới dạng các phần tử riêng biệt trong tài liệu. Đó là dữ liệu dư thừa. Bạn có thể trích xuất day và hour từ day trong truy vấn tổng hợp bằng cách sử dụng Date Aggregation
toán tử.