Mongodb: วิธีจัดเรียงตามหลายฟิลด์
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจัดเรียงเอกสารใน MongoDB ตามหลายฟิลด์:
db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )
รหัสเฉพาะนี้จะเรียงลำดับเอกสารในคอลเลกชันที่เรียกว่า myCollection ก่อนตาม ฟิลด์ 1 จากน้อยไปหามาก จากนั้นตาม ฟิลด์ 2 จากมากไปน้อย
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้กับ ทีม คอลเลกชัน ที่มีเอกสารต่อไปนี้:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Spurs ", points: 30, rebounds: 12})
db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Cavs ", points: 25, rebounds: 9})
ตัวอย่างที่ 1: จัดเรียงตามหลายฟิลด์ใน MongoDB (จากน้อยไปมาก)
เราสามารถใช้โค้ดต่อไปนี้เพื่อจัดเรียงเอกสารในคอลเลกชัน Teams ก่อนโดยการเพิ่ม “คะแนน” จากนั้นจึงเพิ่ม “การตีกลับ”:
db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )
แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ObjectId("61f952c167f1c64a1afb203b"),
team: 'Rockets',
points: 20,
rebounds: 7 }
{ _id: ObjectId("61f952c167f1c64a1afb203c"),
team: 'Warriors',
points: 25,
rebounds: 5 }
{ _id: ObjectId("61f952c167f1c64a1afb203d"),
team: 'Cavs',
points: 25,
rebounds: 9 }
{ _id: ObjectId("61f952c167f1c64a1afb2039"),
team: 'Mavs',
points: 30,
rebounds: 8 }
{ _id: ObjectId("61f952c167f1c64a1afb203a"),
team: 'Spurs',
points: 30,
rebounds: 12 }
โปรดทราบว่าเอกสารจะจัดเรียงโดยการเพิ่มช่อง “คะแนน” (จากเล็กที่สุดไปใหญ่ที่สุด) จากนั้นจึงเพิ่มช่อง “รีบาวด์” (จากเล็กที่สุดไปใหญ่ที่สุด)
ตัวอย่างที่ 2: จัดเรียงตามหลายฟิลด์ใน MongoDB (จากมากไปน้อย)
เราสามารถใช้โค้ดต่อไปนี้เพื่อจัดเรียงเอกสารในคอลเลกชัน ทีม ก่อนโดยการลด “คะแนน” จากนั้นจึงลด “การตีกลับ”:
db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )
แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ObjectId("61f952c167f1c64a1afb203a"),
team: 'Spurs',
points: 30,
rebounds: 12 }
{ _id: ObjectId("61f952c167f1c64a1afb2039"),
team: 'Mavs',
points: 30,
rebounds: 8 }
{ _id: ObjectId("61f952c167f1c64a1afb203d"),
team: 'Cavs',
points: 25,
rebounds: 9 }
{ _id: ObjectId("61f952c167f1c64a1afb203c"),
team: 'Warriors',
points: 25,
rebounds: 5 }
{ _id: ObjectId("61f952c167f1c64a1afb203b"),
team: 'Rockets',
points: 20,
rebounds: 7 }
โปรดทราบว่าเอกสารจะจัดเรียงตามการลดฟิลด์ “คะแนน” (จากมากไปหาน้อย) จากนั้นจึงลดฟิลด์ “รีบาวด์” (จากมากไปน้อย)
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน การเรียงลำดับ ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีจัดเรียงตามวันที่
MongoDB: วิธีจัดกลุ่มตามและนับ
MongoDB: วิธีจัดกลุ่มตามหลายฟิลด์