Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tổng điểm của học sinh cụ thể với MongoDB Aggregation

Tính tổng điểm học sinh bằng MongoDB Aggregation

Sử dụng aggregate() kết hợp với toán tử $sum để tính tổng điểm của một học sinh cụ thể.

1. Tạo collection điểm số

> db.demo434.insertOne({ "Name": "Chris", "Score": 45 });
{ "acknowledged": true, "insertedId": ObjectId("5e771603bbc41e36cc3cae93") }

> db.demo434.insertOne({ "Name": "David", "Score": 55 });
{ "acknowledged": true, "insertedId": ObjectId("5e77161abbc41e36cc3cae94") }

> db.demo434.insertOne({ "Name": "Chris", "Score": 55 });
{ "acknowledged": true, "insertedId": ObjectId("5e771624bbc41e36cc3cae95") }

2. Xem tất cả tài liệu

> db.demo434.find();

Kết quả:

{ "_id": ObjectId("5e771603bbc41e36cc3cae93"), "Name": "Chris", "Score": 45 }
{ "_id": ObjectId("5e77161abbc41e36cc3cae94"), "Name": "David", "Score": 55 }
{ "_id": ObjectId("5e771624bbc41e36cc3cae95"), "Name": "Chris", "Score": 55 }

3. Truy vấn tổng điểm của Chris

> db.demo434.aggregate([
    { "$match": { "Name": "Chris" } },
    { "$group": { "_id": null, "TotalScore": { "$sum": "$Score" } } }
]);

4. Kết quả

{ "_id": null, "TotalScore": 100 }

Giải thích

  • $match: Lọc chỉ lấy tài liệu có Name = "Chris"
  • $group: Gộp tất cả tài liệu đã lọc (null _id = gộp tất cả), tính tổng trường Score

Mẹo: Thay null bằng "$Name" nếu muốn xem tổng điểm của tất cả học sinh cùng lúc.