[MongoDB EP.010] How To MongoDb Aggregate
Aggregate คือ
การดึงข้อมูลจากหลายๆที่ให้มาอยู่รวมกันเป็นกลุ่มข้อมูลเดียวกัน โดยสามารถกำหนดเงื่อนไขการรวมข้อมูล หรือแสดงข้อมูลออกมาได้
ตัวอย่าง Operators
- $match : เป็นการกรองข้อมูลที่ต้องการจาก Document
- $group : เป็นการรวม Document โดยใช้การระบุข้อมูลที่ต้องการรวม
- $project : เป็นการปรับแต่ง Document ที่ต้องการ ให้แสดงหรือไม่แสดง และเปลี่ยนชื่อ Fields ได้
ตัวอย่างการใช้ Operators
- $match
db.collection.aggregate()
.match({field_name:value})
จากรูป ได้ทำการกรองข้อมูลของ Document โดยใช้ Field ที่ชื่อ visitHour เป็นตัวกรองข้อมูล โดย Document ที่ต้องการ มีค่า visitHour เท่ากับ 0
- $group
db.collection.aggregate()
.group({_id:"$field_name"})
จากรูป _id คือ เงื่อนไขในการรวม Document โดยได้ทำการรวม Document โดยใช้ Field ที่ชื่อ visitHour เป็นตัวรวมข้อมูล โดย Document ที่รวม มีค่า visitHour เดียวกัน
- $project
db.collection.aggregate()
.project({field_name:value}) //value -> 0,1 or "value"
field_name คือ field ที่มีอยู่แล้ว หรือ ชื่อที่ต้องการแสดง
value เป็น 0 คือ การตั้งค่าไม่ให้ field_name ที่กำหนดแสดง
value เป็น 1 คือ การตั้งค่าให้ field_name ที่กำหนดแสดง
จากรูป เป็นการแสดงข้อมูลทั้งหมดใน Document โดยกำหนดให้ visitHour มีค่าเท่ากับ 0 ทำให้ visitHour ไม่แสดง
การใช้ Operators ร่วมกัน
db.collection.aggregate()
.match({field_name:value})
.group({_id:"$field_name"})
.project({field_name:value})
จากรูป เป็นการตั้งค่าให้กรองข้อมูล visitHour ที่มีค่าเท่ากับ 0 จากนั้นทำการรวม Document โดยใช้ field ที่ชื่อ deviceType ถ้า Document ไหนมี deviceType ที่เหมือนกัน จะทำการรวม Document จากนั้นทำการตั้งค่าการแสดงผลให้ _id ไม่แสดงผล และทำการแสดง field ที่ชื่อ device โดยข้อมูลที่แสดง มาจาก _id
Touch Technologies
“ เราไม่ได้ถูกต้องที่สุด แต่เราแสดงสิ่งที่เราทำ ”