การคำนวณค่าเฉลี่ย (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"