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

การคำนวณค่าเฉลี่ยของ Field เฉพาะใน MongoDB

การคำนวณค่าเฉลี่ย (average) ของ field เฉพาะใน MongoDB สามารถทำได้โดยใช้ aggregate() ร่วมกับ operator $avg ตัวอย่างนี้จะสาธิตการหาค่าเฉลี่ยคะแนนสอบของนักเรียน

สร้างคอลเลกชันและเพิ่มข้อมูล

> db.demo214.insertOne({"Marks":56,"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e319403d395bdc2134705") }
> db.demo214.insertOne({"Marks":86,"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e319c03d395bdc2134706") }
> db.demo214.insertOne({"Marks":78,"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e31a403d395bdc2134707") }

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

> db.demo214.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e3e319403d395bdc2134705"), "Marks" : 56, "Name" : "David" }
{ "_id" : ObjectId("5e3e319c03d395bdc2134706"), "Marks" : 86, "Name" : "Bob" }
{ "_id" : ObjectId("5e3e31a403d395bdc2134707"), "Marks" : 78, "Name" : "Carol" }

Query คำนวณค่าเฉลี่ยด้วย Aggregate

> db.demo214.aggregate([
...   {
...     $group: {
...       "_id": null,
...       AverageValue: { $avg: "$Marks" }
...     }
...   }
... ])

คำอธิบาย:

  • $group: จัดกลุ่มข้อมูล โดย "_id": null หมายถึงจัดกลุ่มทั้งหมดเป็นกลุ่มเดียว
  • $avg: "$Marks": คำนวณค่าเฉลี่ยของ field Marks

ผลลัพธ์

{ "_id" : null, "AverageValue" : 73.33333333333333 }

ค่าเฉลี่ย = (56 + 86 + 78) / 3 = 73.33

เคล็ดลับ: หากต้องการคำนวณค่าเฉลี่ยแยกตามกลุ่ม (เช่น แยกตามวิชา หรือห้องเรียน) ให้เปลี่ยน "_id": null เป็น field ที่ต้องการจัดกลุ่ม เช่น "_id": "$Subject"