Để lấy tài liệu có giá trị lớn nhất (maximum) của một trường, sắp xếp giảm dần (-1) và giới hạn 1 kết quả (limit(1)). Tạo collection:
> 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") }
Hiển thị dữ liệu:
> db.demo669.find();
Kết quả (5 tài liệu, Marks: 76, 55, 89, 88, 79):
Truy vấn lấy tài liệu có Marks lớn nhất:
> db.demo669.find().sort({"Marks":-1}).limit(1);Kết quả - Marks=89 (lớn nhất):
Cách thay thế với Aggregation:
db.demo669.aggregate([ { $sort: { Marks: -1 } }, { $limit: 1 } ])Hoặc dùng
$maxtrong$group(chỉ lấy giá trị max, không lấy toàn bộ document):db.demo669.aggregate([{ $group: { _id: null, maxMarks: { $max: "$Marks" } } }])Lưu ý:
sort()+limit()cần index trên trường sắp xếp để tránh in-memory sort (giới hạn 32MB RAM). Tạo index:db.demo669.createIndex({Marks: -1}).