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

MongoDB Aggregation: หาผลรวมราคาสินค้าตาม Product ID เดียวกัน

Group และ Sum ราคาสินค้าตาม Product ID ด้วย Aggregation

บทความนี้สาธิตการใช้ $group ใน Aggregation Pipeline เพื่อจัดกลุ่มเอกสารตาม Product_Id และคำนวณผลรวม ProductPrice ในแต่ละกลุ่ม

ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง

> db.aggreagateDemo.insertOne({"Product_Id":1,"ProductPrice":50});
{ "acknowledged": true, "insertedId": ObjectId("5e06d3c025ddae1f53b621d9") }
> db.aggreagateDemo.insertOne({"Product_Id":2,"ProductPrice":100});
{ "acknowledged": true, "insertedId": ObjectId("5e06d3c625ddae1f53b621da") }
> db.aggreagateDemo.insertOne({"Product_Id":2,"ProductPrice":500});
{ "acknowledged": true, "insertedId": ObjectId("5e06d3cb25ddae1f53b621db") }
> db.aggreagateDemo.insertOne({"Product_Id":1,"ProductPrice":150});
{ "acknowledged": true, "insertedId": ObjectId("5e06d3d125ddae1f53b621dc") }

ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด

> db.aggreagateDemo.find().pretty();

ผลลัพธ์: มี Product_Id 1 (2 รายการ), Product_Id 2 (2 รายการ)

ขั้นตอนที่ 3: Aggregation Pipeline Group และ Sum

> db.aggreagateDemo.aggregate([
    { $group: {
        _id: "$Product_Id",
        TotalValue: { $sum: "$ProductPrice" }
    }}
]);

ผลลัพธ์ที่ได้

{ "_id": 2, "TotalValue": 600 }
{ "_id": 1, "TotalValue": 200 }

สรุป: $group กำหนด _id เป็นฟิลด์ที่ต้องการจัดกลุ่ม ($Product_Id) และใช้ Accumulator $sum คำนวณผลรวมของฟิลด์ตัวเลข ($ProductPrice) ในแต่ละกลุ่ม