Mongodb: วิธีค้นหาค่าสูงสุดในคอลเลกชัน


คุณสามารถใช้วิธีการต่อไปนี้เพื่อค้นหาค่าสูงสุดของฟิลด์ใน MongoDB:

วิธีที่ 1: ส่งกลับเอกสารที่มีค่าสูงสุด

 db.teams.find().sort({" field ": -1 }).limit( 1 )

โค้ดส่วนนี้จะเรียงลำดับเอกสารทั้งหมดในคอลเลกชั่นจากมากไปน้อยตามฟิลด์เฉพาะ จากนั้นส่งคืนเฉพาะเอกสารแรกเท่านั้น

วิธีที่ 2: ส่งกลับเฉพาะค่าสูงสุด

 db.teams.find().sort({" field ": -1 }).limit( 1 ).toArray().map(function(u){ return u.field})

ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละวิธีกับ ทีม เรียกเก็บเงินพร้อมเอกสารต่อไปนี้:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

ตัวอย่างที่ 1: ส่งกลับเอกสารที่มีค่าสูงสุด

เราสามารถใช้รหัสต่อไปนี้เพื่อส่งคืนเอกสารที่มีค่าสูงสุดในช่อง “คะแนน”:

 db.teams.find().sort({" points ": -1 }).limit( 1 ) 

แบบสอบถามนี้ส่งคืนเอกสารต่อไปนี้:

 { _id: ObjectId("618285361a42e92ac9ccd2c6"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

เอกสารนี้ถูกส่งคืนเนื่องจากมีค่าสูงสุด (33) ในช่อง “คะแนน” ในบรรดาเอกสารทั้งหมด

ตัวอย่างที่ 2: ส่งกลับเฉพาะค่าสูงสุด

เราสามารถใช้รหัสต่อไปนี้เพื่อส่งคืนเฉพาะค่าสูงสุดในช่อง “คะแนน” ในเอกสารทั้งหมด:

 db.teams.find().sort({" points ": -1 }).limit( 1 ).toArray().map(function(u){ return u.points})

แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:

 [33]

โปรดทราบว่าจะส่งคืนค่าสูงสุดเท่านั้น (33) แทนที่จะเป็นทั้งเอกสารที่มีค่าสูงสุด

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีจัดกลุ่มตามและนับ
MongoDB: วิธีจัดกลุ่มตามหลายฟิลด์
MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่

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

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