Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การเรียงลำดับข้อมูลด้วย MongoDB Aggregate Query

ใน 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 แบบแยกขั้นตอน