ใน MongoDB สามารถใช้งาน $match ร่วมกับ aggregate เพื่อกรองและเรียงลำดับข้อมูลได้ ตัวอย่างนี้จะสาธิตวิธีการสร้างคอลเลกชันและเรียงลำดับข้อมูลนักเรียนตามอายุจากมากไปน้อย
สร้างคอลเลกชันและเพิ่มข้อมูลตัวอย่าง
> db.demo67.insertOne({"StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289edf602d9a2ff1828ed8") }
> db.demo67.insertOne({"StudentAge":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289ee1602d9a2ff1828ed9") }
> db.demo67.insertOne({"StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289ee3602d9a2ff1828eda") }
แสดงข้อมูลทั้งหมดด้วย find()
> db.demo67.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e289edf602d9a2ff1828ed8"), "StudentAge" : 23 }
{ "_id" : ObjectId("5e289ee1602d9a2ff1828ed9"), "StudentAge" : 21 }
{ "_id" : ObjectId("5e289ee3602d9a2ff1828eda"), "StudentAge" : 24 }
Query เรียงลำดับด้วย Aggregate
> db.demo67.aggregate([
... {$match: {"StudentAge": {$gt: 20} }}
... ,{$sort: {"StudentAge": -1} }
... ]);
คำอธิบาย:
$match: กรองเอาเฉพาะนักเรียนที่อายุมากกว่า 20 ปี$sort: เรียงลำดับStudentAgeแบบ descending (-1 = มากไปน้อย, 1 = น้อยไปมาก)
ผลลัพธ์หลังเรียงลำดับ
{ "_id" : ObjectId("5e289ee3602d9a2ff1828eda"), "StudentAge" : 24 }
{ "_id" : ObjectId("5e289edf602d9a2ff1828ed8"), "StudentAge" : 23 }
{ "_id" : ObjectId("5e289ee1602d9a2ff1828ed9"), "StudentAge" : 21 }
หมายเหตุ: การใช้ aggregate ช่วยให้สามารถรวมหลายขั้นตอนการประมวลผลข้อมูลใน pipeline เดียวได้ ซึ่งมีประสิทธิภาพมากกว่าการ query แบบแยกขั้นตอน