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

รวมค่าฟิลด์เฉพาะใน MongoDB ด้วย Aggregation $group $sum

การคำนวณผลรวมของฟิลด์ตัวเลขเฉพาะฟิลด์ทั่วคอลเลกชัน ใช้ $group กับ $sum

> db.demo677.insertOne({Value: 10});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421f404263e90dac943f8") }
> db.demo677.insertOne({Value: 50});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421f704263e90dac943f9") }
> db.demo677.insertOne({Value: 20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421fa04263e90dac943fa") }
> db.demo677.insertOne({Value: 20});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea421fe04263e90dac943fb") }

แสดงข้อมูล:

> db.demo677.find();

คิวรีหาผลรวม Value

> db.demo677.aggregate({$group: {_id: null, sum: {$sum: "$Value"}}});

ผลลัพธ์:


การขยาย: รวมหลายฟิลด์พร้อมกัน

db.demo677.aggregate([{$group: {
  _id: null,
  sumValue: {$sum: "$Value"},
  avgValue: {$avg: "$Value"},
  minValue: {$min: "$Value"},
  maxValue: {$max: "$Value"},
  count: {$sum: 1}
}}]);

จัดกลุ่มแล้วรวม (Group by + Sum)

db.collection.aggregate([
  {$group: {_id: "$category", total: {$sum: "$amount"}}}
]);

Accumulator Operators สำหรับ $group

Operatorคำอธิบาย
$sumผลรวม (ใส่ 1 = นับจำนวน)
$avgค่าเฉลี่ย
$min / $maxค่าต่ำสุด / สูงสุด
$first / $lastค่าแรก / สุดท้าย (ต้อง $sort ก่อน)
$pushสร้างอาร์เรย์ค่าทั้งหมด
$addToSetสร้างอาร์เรย์ค่าที่ไม่ซ้ำ
$stdDevPop / $stdDevSampStandard deviation