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: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่