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

Truy vấn aggregate MongoDB để sắp xếp dữ liệu

Để 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.