Operator $avg ใน MongoDB Aggregation ใช้คำนวณค่าเฉลี่ยของ Field ที่เป็นตัวเลข เนื้อหานี้สาธิตการหาค่าเฉลี่ยของ Field Score จาก Collection demo159
ตัวอย่างข้อมูลทดสอบ
> db.demo159.insertOne({"Score":50});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3557b2fdf09dd6d0853a01") }
> db.demo159.insertOne({"Score":70});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3557b6fdf09dd6d0853a02") }
> db.demo159.insertOne({"Score":60});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3557c4fdf09dd6d0853a03") }
แสดงข้อมูลทั้งหมด
> db.demo159.find();
{
"_id" : ObjectId("5e3557b2fdf09dd6d0853a01"),
"Score" : 50
}
{
"_id" : ObjectId("5e3557b6fdf09dd6d0853a02"),
"Score" : 70
}
{
"_id" : ObjectId("5e3557c4fdf09dd6d0853a03"),
"Score" : 60
}
Aggregation Query คำนวณ Average
> db.demo159.aggregate([
{ $group: { _id: null, AverageValue: { $avg: "$Score" } } }
]);
ผลลัพธ์
{ "_id" : null, "AverageValue" : 60 }
คำอธิบาย
$group: { _id: null }หมายถึง Group ทุก Document เป็น Group เดียว (Global Aggregation)$avg: "$Score"คำนวณ (50 + 70 + 60) / 3 = 60- Ignore Non-Numeric: $avg จะข้ามค่า Null, Missing, Non-numeric อัตโนมัติ
- Group By Field:
{ $group: { _id: "$category", avgScore: { $avg: "$Score" } } } - Operators ที่เกี่ยวข้อง:
$sum,$min,$max,$stdDevPop,$stdDevSamp - ใช้ใน
$projectได้:{ $project: { avg: { $avg: "$scores" } } }(ค่าเฉลี่ย Array)
ตัวอย่างเพิ่มเติม: Average ของ Array Field
> db.demo159.insertOne({ "scores": [80, 90, 100] });
> db.demo159.aggregate([
{ $project: { avgScore: { $avg: "$scores" } } }
]);
// ผลลัพธ์: { "avgScore": 90 }