mongodb aggregate คืออะไรเมื่อเทียบกับ sql

MongoDB Aggregate เป็นวิธีการประมวลผลข้อมูลใน MongoDB ที่สามารถเปรียบเทียบกับ SQL ในการใช้ GROUP BY, HAVING, และ JOIN ได้ โดย Aggregate จะใช้ในการคิวรีข้อมูลที่มีความซับซ้อนหลายขั้นตอน เช่น การกรองข้อมูล, การจัดกลุ่ม, และการคำนวณค่ารวม

  • ใน SQL:
    • GROUP BY จัดกลุ่มข้อมูล
    • HAVING กรองข้อมูลหลังจากการจัดกลุ่ม
    • JOIN ใช้รวมข้อมูลจากหลายตาราง
    • SELECT เลือกข้อมูลที่ต้องการ
  • ใน MongoDB:
    • ใช้ Aggregate pipeline ซึ่งเป็นการประมวลผลข้อมูลตามลำดับของ stages เช่น $match (กรองข้อมูล), $group (จัดกลุ่ม), $sort (เรียงลำดับ), และ $lookup (เทียบกับ JOIN ใน SQL)

ตัวอย่าง Aggregate:

db.collection.aggregate([
  { $match: { status: "active" } }, // เหมือน WHERE
  { $group: { _id: "$category", total: { $sum: "$amount" } } }, // เหมือน GROUP BY
  { $sort: { total: -1 } } // เหมือน ORDER BY
])

Aggregate จะยืดหยุ่นมากขึ้นในการประมวลผลข้อมูลหลายขั้นตอน

ความแตกต่างระหว่าง MongoDB Aggregate กับ find() คือระดับความซับซ้อนในการคิวรีและการประมวลผลข้อมูล:

1. ความซับซ้อนของการประมวลผลข้อมูล

    • ใช้สำหรับดึงข้อมูลแบบพื้นฐาน เช่นการค้นหา (filter) ข้อมูลที่ตรงตามเงื่อนไข
    • เหมาะสำหรับการคิวรีข้อมูลง่ายๆ ที่ไม่ต้องการการคำนวณหรือจัดกลุ่มข้อมูล
    • ผลลัพธ์จะตรงกับข้อมูลดิบในคอลเลกชัน
    • ใช้สำหรับคิวรีที่ซับซ้อนมากขึ้น เช่นการจัดกลุ่ม ($group), การคำนวณ ($sum, $avg), การรวมข้อมูลจากหลายคอลเลกชัน ($lookup) เป็นต้น
    • สามารถประมวลผลข้อมูลหลายขั้นตอนในรูปแบบ pipeline ได้ ทำให้สามารถปรับแต่งและจัดการข้อมูลก่อนที่จะได้ผลลัพธ์

aggregate():ตัวอย่าง:

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

find():ตัวอย่าง:

db.collection.find({ status: "active" })

2. ประสิทธิภาพ

  • find(): เร็วกว่าสำหรับการคิวรีข้อมูลพื้นฐานเพราะไม่ต้องผ่านหลายขั้นตอนของการประมวลผล
  • aggregate(): อาจช้ากว่าเพราะต้องผ่านหลายขั้นตอนในการประมวลผล แต่เหมาะสำหรับการจัดการข้อมูลที่ซับซ้อน

3. ความสามารถในการจัดกลุ่มและคำนวณ

  • find() ไม่สามารถจัดกลุ่มหรือทำคำนวณซับซ้อนภายในคิวรีได้
  • aggregate() สามารถจัดกลุ่มข้อมูลและคำนวณได้ในระดับลึก

Read more

รมว.พลังงาน ปรับส่วนต่าง E20 ห่างโซฮอล์ 95 ลิตรละ 3 บาท กระตุ้นคนไทยใช้พลังงานสะอาด พร้อมขอความร่วมมือประหยัดไฟ

รมว.พลังงาน ปรับส่วนต่าง E20 ห่างโซฮอล์ 95 ลิตรละ 3 บาท กระตุ้นคนไทยใช้พลังงานสะอาด พร้อมขอความร่วมมือประหยัดไฟ

รมว.พลังงาน ประกาศปรับส่วนต่าง E20 ห่างโซฮอล์ 95 เป็น 3 บาท กระตุ้นใช้เชื้อเพลิงชีวภาพ พร้อมรณรงค์คนไทยประหยัดพลังงาน สร้างความมั่นคงพลังงานของชาติ

By ทีมงาน devdog
DMC: จากปรากฏการณ์ดนตรีระดับโลกสู่แสงธรรมนำทางชีวิต

DMC: จากปรากฏการณ์ดนตรีระดับโลกสู่แสงธรรมนำทางชีวิต

สำรวจสองความหมายสำคัญของ DMC! จาก Run-DMC ผู้บุกเบิกการร่วมงานฮิปฮอป-ร็อกที่พลิกโฉมวงการ สู่ dmc.tv ช่องธรรมะนำทางจิตใจเพื่อสันติสุขภายใน.

By ทีมงาน devdog
PM 2.5 กลับมาคลุ้ง! เปิด 12 อันดับค่าฝุ่นสูงสุดในกรุงเทพมหานคร

PM 2.5 กลับมาคลุ้ง! เปิด 12 อันดับค่าฝุ่นสูงสุดในกรุงเทพมหานคร

อัปเดตสถานการณ์ PM 2.5 ในกรุงเทพฯ ประจำวันที่ 10 มี.ค. 2569 พร้อมเปิด 12 เขตค่าฝุ่นสูงสุด และคำแนะนำป้องกันผลกระทบต่อสุขภาพ

By ทีมงาน devdog
One Piece Netflix ภาค 2: การผจญภัยสู่แกรนด์ไลน์ พร้อมกิจกรรมสุดอลังการที่สวนลุมฯ!

One Piece Netflix ภาค 2: การผจญภัยสู่แกรนด์ไลน์ พร้อมกิจกรรมสุดอลังการที่สวนลุมฯ!

One Piece Netflix ซีซัน 2 "มุ่งหน้าสู่แกรนด์ไลน์" เตรียมลงจอ 10 มี.ค. 2569 พร้อมกิจกรรม "GRAND LINE IN THAILAND" ที่สวนลุมพินี ห้ามพลาด!

By ทีมงาน devdog