[MongoDB EP.010] How To MongoDb Aggregate

Poorin Suradechanun
Touch Technologies
Published in
2 min readJan 22, 2019

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

“ เราไม่ได้ถูกต้องที่สุด แต่เราแสดงสิ่งที่เราทำ ”

--

--