MongoDB เรียงลำดับผลการสืบค้น

Mongodb Reiyng Ladab Phl Kar Subkhn



ระบบฐานข้อมูลเกือบทั้งหมดจัดลำดับความสำคัญของการจัดเรียงข้อมูลก่อนที่จะเรียกค้น ซึ่งทำให้แตกต่างจากวิธีการจัดเก็บข้อมูลอื่นๆ MongoDB ยังมีวิธีต่างๆ ในการกำหนดวิธีการจัดเรียงข้อมูล ส่วนใหญ่เราใช้เมธอด sort() เพื่อกำหนดลำดับการแสดงเอกสาร ลำดับของลำดับจะถูกส่งผ่านเป็นพารามิเตอร์ไปยังวิธีการ sort() ฟิลด์อย่างน้อยหนึ่งฟิลด์ที่ประกอบด้วยเมธอด sort() มักตามด้วยค่า '1' หรือ '-1' วิธีการ sort() ทำให้แบบสอบถามอ่านง่ายขึ้น ซึ่งปรับปรุงความเข้าใจของคอลเลกชันที่ระบุ

MongoDB เรียงลำดับผลลัพธ์การค้นหาอย่างไร

วิธีการจัดเรียงใช้ฟิลด์และค่าที่เกี่ยวข้องเป็นพารามิเตอร์เดียว วิธีการจัดเรียงจะยอมรับพารามิเตอร์ในรูปแบบ JSON เช่น {Field: Value} นอกจากนี้ยังสามารถป้อนฟิลด์และค่าต่างๆ ในเมธอด sort() เพื่อรับเอกสารที่เรียงลำดับจากคอลเลกชัน พิจารณาเอกสารต่อไปนี้ซึ่งเราได้แทรกเอกสารอื่น ๆ จำนวนมากลงในฐานข้อมูลของเรา ชื่อของฐานข้อมูล MongoDB นี้มีชื่อว่า “Employees” คอลเลกชัน 'พนักงาน' มีข้อมูลทั้งหมดของพนักงานที่แสดงด้านล่าง

db.Employees.insertMany([
{
'ชื่อ': 'โรเบิร์ต',
'ทบ': '14-05-2536',
'เพศชาย',
'อีเมล': ' [ป้องกันอีเมล] ',
'แผนก': 'ความปลอดภัย',
'เงินเดือน' : 5,000
},
{
'ชื่อ': 'ไคล์',
'ทบ': '31-05-2542',
'เพศหญิง',
'อีเมล': ' [ป้องกันอีเมล] ',
'แผนก': 'ไอที',
'เงินเดือน' : 6200
},
{
'ชื่อ': 'แมทธิว',
'ทบ': '26-04-2536',
'เพศชาย',
'อีเมล': ' [ป้องกันอีเมล] ',
'แผนก': 'บัญชี',
'เงินเดือน' : 3500
},
{
'ชื่อ': 'เควิน',
'วันเกิด': '14-07-1991',
'เพศชาย',
'อีเมล': ' [ป้องกันอีเมล] ',
'แผนก': 'ความปลอดภัย',
'เงินเดือน' : 4500
},

{
'ชื่อ': 'จูเลีย',
'ทบ': '09-12-2543',
'เพศหญิง',
'อีเมล': ' [ป้องกันอีเมล] ',
'แผนก': 'ไอที',
'เงินเดือน' : 2500
}
])

คอลเลกชัน 'พนักงาน' ถูกแทรกพร้อมกับเอกสารที่มีการยืนยันซึ่งแสดงในผลลัพธ์ต่อไปนี้ เราจะใช้เอกสารคอลเลกชันนี้เพื่อแสดงการทำงานของผลการสืบค้นการเรียงลำดับ









ตัวอย่าง # 1: MongoDB Unsorted Collection

เมื่อดำเนินการค้นหาด้วยเมธอด find() ระบบจะให้ชุดเอกสารที่ไม่เรียงลำดับเสมอ สิ่งนี้สามารถชัดเจนยิ่งขึ้นด้วยผลลัพธ์การค้นหาด้านล่าง



>db.Employees.find({},{_id:0})

ที่นี่ เรามีคำถามเกี่ยวกับคอลเลกชัน 'พนักงาน' ด้วยเมธอด find() เมธอด find() ใช้พารามิเตอร์ว่างพร้อมกับ '_id:0' เพื่อให้ได้ผลลัพธ์ที่ง่ายขึ้น รหัสเอกสารจะถูกลบออกโดยใช้โอเปอเรเตอร์ “_id:0” ตามค่าเริ่มต้น เราได้รับคอลเล็กชันที่ไม่เรียงลำดับเมื่อค้นหาข้อความค้นหาด้วยเมธอด find() ผลลัพธ์ที่ดึงมาด้านล่างคือเอกสารที่ไม่ได้จัดเรียงทั้งหมดตามวิธีที่เรามีในขณะแทรก





ตัวอย่าง # 2: MongoDB เรียงลำดับผลการสืบค้นจากน้อยไปหามาก

คอลเลกชั่นที่เรียงลำดับใน MongoDB ได้โดยใช้เมธอด sort() ซึ่งควรอยู่หลังเมธอด find() วิธีการ sort() ใน MongoDB ใช้พารามิเตอร์ที่รวมอยู่ในชื่อฟิลด์และลำดับของการเรียงลำดับเอกสาร เราจำเป็นต้องป้อน '1' เป็นพารามิเตอร์ลงในฟิลด์ เนื่องจากเราจะดึงเอกสารตามลำดับจากน้อยไปหามากในตัวอย่างนี้โดยเฉพาะ ต่อไปนี้ในการเรียงลำดับผลการสืบค้นในลำดับจากน้อยไปหามาก



>db.Employees.find().sort({ชื่อ:1})

ที่นี่เราได้ใช้วิธี sort() หลังจากค้นหาคำค้นหา วิธีการ sort() ใช้เพื่อจัดเรียงฟิลด์ 'ชื่อ' ตามลำดับจากน้อยไปหามาก เนื่องจากค่า '1' ถูกวางไว้ถัดจากฟิลด์ที่ระบุ โปรดทราบว่าหากไม่ได้ระบุเมธอด sort() ด้วยค่าพาราเมตริกใดๆ คอลเล็กชันจะไม่ถูกจัดเรียง ผลลัพธ์จากวิธีการ sort() จะได้รับตามลำดับเริ่มต้น ผลลัพธ์ของเมธอด sort() ตามชื่อฟิลด์ในลำดับจากน้อยไปหามากจะแสดงในเชลล์ MongoDB ต่อไปนี้

ตัวอย่าง # 3: MongoDB เรียงลำดับผลการสืบค้นจากมากไปน้อย

ตอนนี้ เรากำลังแสดงผลการสืบค้นแบบเรียงลำดับของ MongoDB ตามลำดับจากมากไปน้อย ข้อความค้นหาประเภทนี้เหมือนกับตัวอย่างข้างต้น แต่มีความแตกต่างอย่างหนึ่ง สำหรับลำดับจากมากไปหาน้อย วิธีการ sort() จะนำค่า '-1' มาเทียบกับชื่อคอลัมน์ ผลการสืบค้นแบบเรียงลำดับจากมากไปหาน้อยจะได้รับด้านล่าง

>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})

ที่นี่ ข้อความค้นหาเริ่มต้นด้วยเมธอด find() ซึ่งค้นหาฟิลด์ 'อีเมล' และส่งกลับค่าฟิลด์ 'อีเมล' เท่านั้น ต่อไป เราได้ระบุวิธีการ sort() ซึ่งใช้ในการจัดเรียงฟิลด์ 'อีเมล' และค่า '-1' ถัดจากนั้นบ่งชี้ว่าผลลัพธ์การเรียงลำดับที่ได้รับจะเรียงลำดับจากมากไปน้อย ผลการสืบค้นการเรียงลำดับจากมากไปหาน้อยจะถูกดึงหลังจากเรียกใช้งานในเชลล์ MongoDB

ตัวอย่าง # 4: MongoDB เรียงลำดับผลการสืบค้นสำหรับหลายฟิลด์

เราสามารถจัดเรียงหลายฟิลด์ใน MongoDB ด้วยวิธีการ sort() ฟิลด์ที่จะจัดเรียงควรประกาศใน sort() วิธีการ การเรียงลำดับจะขึ้นอยู่กับลำดับการประกาศของฟิลด์ และลำดับการจัดเรียงจะถูกตรวจสอบจากซ้ายไปขวา แบบสอบถามสำหรับการเรียงลำดับหลายฟิลด์ควรมีลักษณะดังนี้:

>db.Employees.find({},{_id:0}).sort({'name':1,'salary':1})

ที่นี่ วิธีการ sort() จะถูกส่งผ่านพร้อมกับฟิลด์ 'ชื่อ' และ 'เงินเดือน' ที่จะจัดเรียง ฟิลด์ 'ชื่อ' จากคอลเล็กชัน 'พนักงาน' จะถูกจัดเรียงก่อน เนื่องจากเป็นฟิลด์อาร์กิวเมนต์แรกของเมธอด sort() จากนั้น sort() วิธีการเรียงลำดับฟิลด์อาร์กิวเมนต์ที่สอง 'เงินเดือน' ลำดับของฟิลด์ทั้งสองคือ '1' ซึ่งระบุว่าการเรียงลำดับจะเรียงลำดับจากน้อยไปหามาก ผลลัพธ์สำหรับหลายฟิลด์ของการเรียงลำดับแบบสอบถามถูกสร้างขึ้นตามลำดับการจัดเรียงที่ระบุด้านล่าง

ตัวอย่าง # 5: MongoDB เรียงลำดับผลการสืบค้นด้วยวิธีจำกัด

นอกจากนี้ เมธอด sort() ยังสามารถรวมกับเมธอด limit() ซึ่งให้จำนวนที่จำกัดของเอกสารที่เรียงลำดับตามคำค้นหานั้น เมธอด limit() ต้องการจำนวนเต็มเป็นพารามิเตอร์ ซึ่งจะจำกัดจำนวนเอกสารที่ควรรวมอยู่ในชุดเอาต์พุต ข้อความค้นหาถูกตั้งค่าไว้ด้านล่าง ซึ่งจะเรียงลำดับเอกสารก่อน แล้วจึงจัดเตรียมเอกสารขีดจำกัดที่ระบุ

>db.Employees.find({},{_id:0}).sort({'department':1,'DOB':1}).limit(4).pretty()

ที่นี่ เรามีข้อความค้นหาที่เริ่มต้นการเรียงลำดับสำหรับคอลัมน์ 'แผนก' และสำหรับคอลัมน์ 'DOB' ตามลำดับจากน้อยไปมากโดยใช้วิธีการ sort() เมื่อการเรียงลำดับเสร็จสิ้น เราได้วางเมธอด limit() ไว้ข้างๆ เพื่อดึงเอกสารที่ถูกจำกัด เมธอด limit() ได้รับค่าตัวเลขเป็น '4' ซึ่งหมายความว่าจะแสดงเฉพาะเอกสารที่เรียงลำดับสี่รายการไปยังเอาต์พุตตามที่แสดงในหน้าจอต่อไปนี้:

ตัวอย่าง # 6: MongoDB เรียงลำดับผลการสืบค้นด้วย $sort Aggregation

ในตัวอย่างทั้งหมดข้างต้น เราได้ดำเนินการเรียงลำดับผ่านเมธอด sort() ของ MongoDB มีอีกวิธีหนึ่งในการเรียงลำดับใน MongoDB ซึ่งทำได้ผ่านการรวม $sort ตัวดำเนินการ $sort จะเรียงลำดับเอกสารอินพุตทั้งหมดซึ่งจะส่งคืนเอกสารที่เรียงลำดับไปยังไปป์ไลน์ ตัวดำเนินการ $sort ใช้กับคอลเล็กชัน 'พนักงาน' ด้านล่าง

db.Employees.aggregate([ { $sort : { เงินเดือน : 1, _id: -1 } } ])

ที่นี่เราได้เรียกวิธีการรวมซึ่งเราสามารถใช้ตัวดำเนินการ '$sort' จากนั้น เรามีนิพจน์ตัวดำเนินการ $sort ซึ่งเรียงลำดับคอลัมน์ 'เงินเดือน' จากน้อยไปมาก และคอลัมน์ 'id' ในลำดับจากมากไปน้อย การรวม $sort ที่ใช้กับฟิลด์จะแสดงผลดังต่อไปนี้:

ตัวอย่าง # 6: MongoDB เรียงลำดับผลการสืบค้นด้วยวิธีข้าม

วิธีการ sort() สามารถจับคู่กับวิธีการข้าม() ชุดข้อมูลผลลัพธ์สามารถมีเอกสารจำนวนหนึ่งที่จะถูกละเว้นโดยใช้วิธีการข้าม () เช่นเดียวกับเมธอด limit() เมธอดการข้าม() ยังยอมรับค่าตัวเลขซึ่งระบุจำนวนเอกสารที่จะข้าม เราได้รวมวิธีการ sort() กับวิธีการข้าม() ในแบบสอบถามการเรียงลำดับ

>db.Employees.find({},{_id:0}).sort({'salary':1}).skip(4).pretty()

ที่นี่เราได้ใช้เมธอดการข้าม () ถัดจากเมธอด sort () เมื่อเมธอด sort() เรียงลำดับเอกสาร มันจะส่งผ่านผลลัพธ์การเรียงลำดับไปยังเมธอด sort() หลังจากนั้น เมธอดการข้าม () จะลบเอกสารที่เรียงลำดับสี่รายการแรกออกจากคอลเล็กชัน

บทสรุป

บทความนี้เกี่ยวกับการเรียงลำดับผลการสืบค้นใน MongoDB เราได้ใช้วิธีการ sort() เพื่อจุดประสงค์นี้ ซึ่งจัดระเบียบบันทึกตามลำดับที่ระบุ เรายังใช้วิธีการ sort() สำหรับการเรียงลำดับหลายรายการในหลายฟิลด์ จากนั้นเมธอด sort() จะถูกจับคู่กับเมธอด limit() และข้าม() กับเอกสารที่เรียงลำดับโดยใช้การดำเนินการเหล่านี้ นอกจากนี้ เราได้เตรียมการรวม $sort สำหรับผลลัพธ์การค้นหาการเรียงลำดับใน MongoDB