Tính trung bình trong các nhóm
Thuộc phần Cơ sở dữ liệu với MongoDB trong hành trình Node.js của Coddy. Bài học 22 trên 29.
Một nhóm có thể tính nhiều giá trị tổng hợp từ cùng các tài liệu đầu vào. Biểu thức nhóm chọn các bản ghi được xếp cùng nhau; mỗi bộ tích lũy tính một trường đầu ra riêng.
{$group: {
_id: '$team',
players: {$sum: 1},
averageScore: {$avg: '$score'}
}}Với hai cầu thủ trong cùng một đội ghi được 8 và 12 điểm, players có giá trị là 2 và averageScore có giá trị là 10. '$score' được đặt trong dấu nháy để lấy điểm của từng cầu thủ đầu vào. Áp dụng cách tương tự cho năm xuất bản sách. Bạn có thể tự chọn tên trường đầu ra; tham chiếu trường xác định các giá trị cần tính trung bình.
Thử thách
DễĐây là một dự án luyện tập nhỏ. Phần thiết lập đã có sẵn; chỉ chỉnh sửa exercise.js.
Nhóm sách theo thể loại và trả về _id, số lượng và averageYear. Sắp xếp đầu ra theo _id tăng dần. Khi chạy: classic có số lượng là 1 và averageYear là 1815; scifi có số lượng là 2 và averageYear là 1972.
Tự làm thử
export async function exercise(books) {
return await books
.aggregate([{ $group: { _id: '$genre', count: { $sum: 1 } } }, { $sort: { _id: 1 } }])
.toArray();
}
Tất cả bài học trong Cơ sở dữ liệu với MongoDB
3Tổng hợp dữ liệu
Đếm tài liệuChuỗi các giai đoạnNhóm dữ liệu với $groupTính trung bình trong các nhómLọc kết quả nhómPipeline tổng hợp dữ liệuKết hợp dữ liệu với $lookupTự luyện tập: Playground Express