บทนี้จะแนะนำ MongoDB Aggregation Pipeline ซึ่งใช้สำหรับการวิเคราะห์ทางสถิติ คล้ายกับคำสั่ง group by
ใน SQL ใน MongoDB shell การวิเคราะห์ทางสถิติทำได้ผ่านฟังก์ชัน db.collection.aggregate()
แนวคิด
Aggregation Pipeline เป็นแนวคิดที่ใช้การทำงานร่วมกันของข้อมูลที่มีความคล้ายคลึงกับน้ำไหลผ่านท่อส่งน้ำ เราสามารถประมวลผลข้อมูลในหลาย ๆ สเตจภายในท่อ หลังจากที่สเตจหนึ่งประมวลผลข้อมูลแล้ว ผลลัพธ์ที่ประมวลผลได้จะถูกส่งไปยังสเตจถัดไปเพื่อประมวลผลเพิ่มเติม
ตัวอย่างการใช้ Aggregation Pipeline ในการวิเคราะห์ทางสถิติ:
- ในสเตจตัวแรกจะคืนข้อมูลเอกสารจากคอลเล็กชันโดยใช้เงื่อนไขบางอย่าง
- ในสเตจที่สอง ข้อมูลเอกสารที่ได้มาจะถูกจัดกลุ่มและรวมกัน
- ในสเตจที่สาม ข้อมูลที่รวมกันจากสเตจที่สองจะถูกเรียงลำดับ
การกระบวนการทั้งหมดคล้ายกับการทำงานของท่อที่ข้อมูลไหลเข้ามาจากปลายท่อหนึ่ง ถูกประมวลผลผ่านสเตจหลาย ๆ รอบ และจากนั้นส่งผลลัพธ์สุดท้ายออกมา
ตัวดำเนินการที่รองรับโดย MongoDB Pipeline
ด้านล่างนี้คือตัวดำเนินการที่รองรับโดย MongoDB:
ตัวดำเนินการ | รายละเอียด |
---|---|
$match | สเตจ $match ใช้สำหรับกรองข้อมูลเอกสารโดยใช้เงื่อนไขคล้ายกับคำสั่ง where ใน SQL |
$group | สเตจ $group ใช้สำหรับจัดกลุ่มและรวมข้อมูลเอกสารคล้ายกับคำสั่ง group by ใน SQL |
$sort | ใช้สำหรับเรียงลำดับข้อมูล |
ขั้นตอนในการใช้ Aggregation Pipeline
โดยทั่วไปมีขั้นตอนสามขั้นตอน:
- กรองข้อมูลเป้าหมายโดยใช้ $match
- จัดกลุ่มและรวมข้อมูลโดยใช้ $group
- เรียงลำดับผลลัพธ์โดยใช้ $sort (ตัวเลือก)
ตัวอย่าง:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
SQL เทียบเท่า:
select sum(amount) as total from orders
where status="A"
group by cust_id
order by total desc
หมายเหตุ: สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการวิเคราะห์ทางสถิติโปรดอ่านต่อในบทถัดไป.