Menu
CoddyTech

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.

challenge icon

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

Tự luyện tập: Playground Express