การคำนวณผลรวมของฟิลด์ตัวเลขทั่วทั้งคอลเลกชัน ใช้ $group กับ $sum โดยตั้ง _id: null
> db.demo527.insertOne({"Price": 45.5});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8aff2fef4dcbee04fbbbdc") }
> db.demo527.insertOne({"Price": 55.5});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8aff34ef4dcbee04fbbbdd") }
> db.demo527.insertOne({"Price": 100.4});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8aff39ef4dcbee04fbbbde") }
> db.demo527.insertOne({"Price": 200.6});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8aff40ef4dcbee04fbbbdf") }
แสดงข้อมูล:
> db.demo527.find();
{ "_id" : ObjectId("5e8aff2fef4dcbee04fbbbdc"), "Price" : 45.5 }
{ "_id" : ObjectId("5e8aff34ef4dcbee04fbbbdd"), "Price" : 55.5 }
{ "_id" : ObjectId("5e8aff39ef4dcbee04fbbbde"), "Price" : 100.4 }
{ "_id" : ObjectId("5e8aff40ef4dcbee04fbbbdf"), "Price" : 200.6 }
คิวรีหาผลรวมราคาทั้งหมด
> db.demo527.aggregate([ { $group: { _id: null, totalPrice: {"$sum": "$Price"} } } ]);
ผลลัพธ์:
การขยายใช้งาน
- จัดกลุ่มตามหมวดหมู่:
{_id: "$Category", total: {$sum: "$Price"}} - ค่าเฉลี่ย:
{$avg: "$Price"} - ค่าสูงสุด/ต่ำสุด:
{$max: "$Price"}/{$min: "$Price"} - นับจำนวน:
{$sum: 1}
สามารถรวมหลายตัวได้ใน $group เดียว เช่น:
{ $group: {
_id: null,
total: {$sum: "$Price"},
average: {$avg: "$Price"},
count: {$sum: 1},
max: {$max: "$Price"},
min: {$min: "$Price"}
}}