Để sắp xếp dữ liệu trong MongoDB, bạn có thể sử dụng stage $match kết hợp với pipeline aggregate. Dưới đây là ví dụ minh họa chi tiết.
Tạo collection và chèn dữ liệu mẫu
> db.demo67.insertOne({"StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289edf602d9a2ff1828ed8") }
> db.demo67.insertOne({"StudentAge":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289ee1602d9a2ff1828ed9") }
> db.demo67.insertOne({"StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e289ee3602d9a2ff1828eda") }
Xem tất cả tài liệu
> db.demo67.find();
Kết quả trả về:
{ "_id" : ObjectId("5e289edf602d9a2ff1828ed8"), "StudentAge" : 23 }
{ "_id" : ObjectId("5e289ee1602d9a2ff1828ed9"), "StudentAge" : 21 }
{ "_id" : ObjectId("5e289ee3602d9a2ff1828eda"), "StudentAge" : 24 }
Truy vấn aggregate để lọc và sắp xếp
Sử dụng $match để lọc các document có StudentAge > 20, sau đó dùng $sort để sắp xếp giảm dần (-1):
> db.demo67.aggregate([
... {$match: {"StudentAge": {$gt: 20} }}
... ,{$sort: {"StudentAge": -1} }
... ]);
Kết quả
{ "_id" : ObjectId("5e289ee3602d9a2ff1828eda"), "StudentAge" : 24 }
{ "_id" : ObjectId("5e289edf602d9a2ff1828ed8"), "StudentAge" : 23 }
{ "_id" : ObjectId("5e289ee1602d9a2ff1828ed9"), "StudentAge" : 21 }
Lưu ý: Stage $match nên đặt ở đầu pipeline để tận dụng index và tối ưu hiệu suất. Stage $sort sử dụng 1 cho tăng dần, -1 cho giảm dần.