Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Truy vấn aggregation MongoDB lấy 2 tài liệu có điểm thấp nhất

Để lấy danh sách đã sắp xếp theo điểm, sử dụng $sort. Kết hợp với $limit: 2 để chỉ hiển thị 2 tài liệu có điểm thấp nhất. Hãy tạo collection mẫu:

> db.demo709.insertOne({Name:"John","Marks":75});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839005d33e20ed1097b76") }
> db.demo709.insertOne({Name:"Chris","Marks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839075d33e20ed1097b77") }
> db.demo709.insertOne({Name:"David","Marks":54});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839125d33e20ed1097b78") }
> db.demo709.insertOne({Name:"Bob","Marks":69});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea839295d33e20ed1097b79") }

Hiển thị tất cả tài liệu:

> db.demo709.find();

Kết quả:

{ "_id" : ObjectId("5ea839005d33e20ed1097b76"), "Name" : "John", "Marks" : 75 }
{ "_id" : ObjectId("5ea839075d33e20ed1097b77"), "Name" : "Chris", "Marks" : 45 }
{ "_id" : ObjectId("5ea839125d33e20ed1097b78"), "Name" : "David", "Marks" : 54 }
{ "_id" : ObjectId("5ea839295d33e20ed1097b79"), "Name" : "Bob", "Marks" : 69 }

Truy vấn aggregation để lấy 2 tài liệu có điểm thấp nhất:

> db.demo709.aggregate([
...   { $group: { _id: '$Marks', ListOfName: { $push: '$Name' } } },
...   { $sort: { '_id': 1 } },
...   { $limit: 2 }
... ]);

Kết quả:

{ "_id" : 45, "ListOfName" : [ "Chris" ] }
{ "_id" : 54, "ListOfName" : [ "David" ] }

Giải thích: Pipeline nhóm theo điểm ($group), sắp xếp tăng dần ($sort), sau đó giới hạn 2 kết quả đầu ($limit).