Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

หาค่าสูงสุด (Maximum) ในคอลเลกชัน MongoDB ด้วย Sort และ Limit

วิธีง่ายที่สุดหาค่าสูงสุดของฟิลด์ตัวเลข: เรียง descending (-1) แล้ว limit(1)

> db.demo669.insertOne({"Marks": 76});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3133c04263e90dac943d9") }
> db.demo669.insertOne({"Marks": 55});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3133f04263e90dac943da") }
> db.demo669.insertOne({"Marks": 89});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3134204263e90dac943db") }
> db.demo669.insertOne({"Marks": 88});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3134504263e90dac943dc") }
> db.demo669.insertOne({"Marks": 79});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3134e04263e90dac943dd") }

แสดงข้อมูล:

> db.demo669.find();

คิวรีหาค่าสูงสุด

> db.demo669.find().sort({"Marks": -1}).limit(1);

ผลลัพธ์ - Marks = 89 (สูงสุด):


วิธีอื่น: ใช้ Aggregation $max

db.demo669.aggregate([{$group: {_id: null, maxMarks: {$max: "$Marks"}}}]);
// ผลลัพธ์: { "_id": null, "maxMarks": 89 }

เปรียบเทียบ

คำแนะนำ

  • สร้าง Index บนฟิลด์ที่ sort: db.demo669.createIndex({Marks: -1})
  • หาค่าต่ำสุด: sort({Marks: 1}).limit(1)
  • หา Top N: sort({Marks: -1}).limit(N)
วิธีคืนค่าใช้ดัชนีเหมาะสำหรับ
sort + limitเอกสารเต็มได้ (ถ้ามี index)ต้องการเอกสารทั้งหมด
$group $maxแค่ค่าสูงสุดได้ต้องการแค่ค่า, ใช้ใน pipeline