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

รวมราคา (Sum Price) ใน MongoDB ด้วย $group Aggregation

การคำนวณผลรวมของฟิลด์ตัวเลขทั่วทั้งคอลเลกชัน ใช้ $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"}
}}