การคำนวณผลรวมของฟิลด์ตัวเลขเฉพาะฟิลด์ทั่วคอลเลกชัน ใช้ $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 / $stdDevSamp | Standard deviation |