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ử.