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

Sắp xếp ID và đảo ngược thứ tự các mục trong MongoDB

Toán tử $natural trả về các tài liệu theo thứ tự tự nhiên (thứ tự nhập vào). Để đảo ngược thứ tự, sử dụng $natural:-1. Hãy tạo một collection với các tài liệu mẫu:

> db.demo710.insertOne({id:101,Name:"Robert"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea83a855d33e20ed1097b7a") }
> db.demo710.insertOne({id:102,Name:"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea83a8d5d33e20ed1097b7b") }
> db.demo710.insertOne({id:103,Name:"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea83a935d33e20ed1097b7c") }
> db.demo710.insertOne({id:104,Name:"Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea83a9b5d33e20ed1097b7d") }

Hiển thị tất cả tài liệu từ collection bằng phương thức find():

> db.demo710.find();

Kết quả đầu ra:

{ "_id" : ObjectId("5ea83a855d33e20ed1097b7a"), "id" : 101, "Name" : "Robert" }
{ "_id" : ObjectId("5ea83a8d5d33e20ed1097b7b"), "id" : 102, "Name" : "Carol" }
{ "_id" : ObjectId("5ea83a935d33e20ed1097b7c"), "id" : 103, "Name" : "Mike" }
{ "_id" : ObjectId("5ea83a9b5d33e20ed1097b7d"), "id" : 104, "Name" : "Sam" }

Truy vấn để sắp xếp và đảo ngược thứ tự các mục:

> db.demo710.find().sort({$natural:-1});

Kết quả đầu ra (đã đảo ngược):

{ "_id" : ObjectId("5ea83a9b5d33e20ed1097b7d"), "id" : 104, "Name" : "Sam" }
{ "_id" : ObjectId("5ea83a935d33e20ed1097b7c"), "id" : 103, "Name" : "Mike" }
{ "_id" : ObjectId("5ea83a8d5d33e20ed1097b7b"), "id" : 102, "Name" : "Carol" }
{ "_id" : ObjectId("5ea83a855d33e20ed1097b7a"), "id" : 101, "Name" : "Robert" }

Lưu ý: $natural sắp xếp theo vị trí vật lý trên đĩa, thường tương ứng với thứ tự chèn. Đây là cách nhanh nhất để lấy tài liệu mới nhất/ cũ nhất mà không cần trường timestamp.