วิธีง่ายที่สุดหาค่าสูงสุดของฟิลด์ตัวเลข: เรียง 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 }เปรียบเทียบ
| วิธี | คืนค่า | ใช้ดัชนี | เหมาะสำหรับ |
|---|---|---|---|
| sort + limit | เอกสารเต็ม | ได้ (ถ้ามี index) | ต้องการเอกสารทั้งหมด |
| $group $max | แค่ค่าสูงสุด | ได้ | ต้องการแค่ค่า, ใช้ใน pipeline |