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: วิธีจัดกลุ่มตามหลายฟิลด์

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *