Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

MongoDB Aggregation: คำนวณผลรวมคะแนนของนักเรียนคนเฉพาะ


การใช้ $sum ใน Aggregate Pipeline

เพื่อคำนวณผลรวมคะแนนของนักเรียนคนเฉพาะ ใช้ $match กรองข้อมูลก่อน แล้วค่อย $group พร้อม $sum

ตัวอย่างข้อมูล

> db.demo434.insertOne({ "Name": "Chris", "Score": 45 });
> db.demo434.insertOne({ "Name": "David", "Score": 55 });
> db.demo434.insertOne({ "Name": "Chris", "Score": 55 });

แสดงข้อมูลทั้งหมด

> db.demo434.find();

ผลลัพธ์:

{ "_id": ObjectId(...), "Name": "Chris", "Score": 45 }
{ "_id": ObjectId(...), "Name": "David", "Score": 55 }
{ "_id": ObjectId(...), "Name": "Chris", "Score": 55 }

Query คำนวณผลรวมคะแนนของ Chris

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

ผลลัพธ์

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

คำอธิบาย

  • $match - กรองเอกสารเฉพาะชื่อ "Chris" ก่อนการคำนวณ
  • $group - จัดกลุ่มทั้งหมด (_id: null) และคำนวณผลรวมด้วย $sum
  • วิธีนี้มีประสิทธิภาพมากกว่าการดึงข้อมูลมาคำนวณในแอปพลิเคชัน