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

MongoDB Aggregate: lấy record đầu tiên theo thứ tự giảm dần

Để lấy record có giá trị lớn nhất (top 1 descending), dùng sort({field: -1}) kết hợp limit(1).

Tạo collection demo267:

> db.demo267.insertOne({id:100,"Name":"Chris"});
> db.demo267.insertOne({id:100,"Name":"Adam"});
> db.demo267.insertOne({id:100,"Name":"David"});
> db.demo267.insertOne({id:100,"Name":"Bob"});

Sắp xếp Name giảm dần và lấy 1 record đầu:

> db.demo267.find().sort({Name:-1}).limit(1);

Kết quả - "David" là lớn nhất theo alphabet:

{
   "_id" : ObjectId("5e4811a51627c0c63e7dbaad"),
   "id" : 100,
   "Name" : "David"
}

Mẹo: Cách này hiệu quả cho top-N đơn giản. Với aggregate phức tạp, dùng $sort + $limit trong pipeline.