MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

3 cách sắp xếp tài liệu trong MongoDB

MongoDB cung cấp một số cách để sắp xếp tài liệu theo một thứ tự cụ thể. Mỗi cái trong số này cho phép chúng tôi sắp xếp các tài liệu theo thứ tự tăng dần hoặc giảm dần.

Ngoài ra còn có tùy chọn để sắp xếp các kết quả của $text tìm kiếm - sắp xếp theo textScore được tính toán siêu dữ liệu theo thứ tự giảm dần.

Dưới đây là 3 cách để sắp xếp tài liệu trong MongoDB.

cursor.sort() Phương pháp

cursor.sort() phương thức chỉ định thứ tự mà truy vấn trả về các tài liệu phù hợp.

Giả sử chúng ta có một bộ sưu tập được gọi là employees với các tài liệu sau:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }

Dưới đây là một ví dụ về việc trả lại các tài liệu đó được sắp xếp theo salary của chúng trường theo thứ tự tăng dần và cả _id của chúng lĩnh vực:

db.employees.find().sort( { salary: 1, _id: 1 } )

Kết quả:

{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

Ở đây, chúng tôi đã sử dụng 1 cho thứ tự tăng dần. Nếu chúng tôi muốn nó theo thứ tự giảm dần, chúng tôi chỉ cần sử dụng -1 thay vào đó.

Lý do tôi bao gồm _id trong thứ tự là vì nếu hai hoặc nhiều nhân viên có cùng mức lương thì _id trường có thể được sử dụng để sắp xếp các tài liệu đó với nhau.

Mặc dù điều này có vẻ tầm thường, nhưng nó sẽ ngăn MongoDB trả lại các tài liệu đó theo một thứ tự khác nhau mỗi khi chúng tôi chạy truy vấn.

Bạn cũng có thể sắp xếp kết quả của một $text Tìm kiếm. Xem MongoDB sort() để làm ví dụ.

$sort Giai đoạn đường ống tổng hợp

Khi sử dụng khung đường dẫn tổng hợp, bạn có thể sử dụng $sort giai đoạn sắp xếp tất cả các tài liệu đầu vào và đưa chúng trở lại đường dẫn theo thứ tự đã sắp xếp.

Đây là cách chúng tôi có thể sử dụng $sort để trả về kết quả giống như ví dụ trước. Ngoại trừ, hãy sắp xếp chúng theo giảm dần đặt hàng lần này:

db.employees.aggregate(
   [
     { $sort : { salary : -1, _id: 1 } }
   ]
)

Kết quả:

{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }

Bạn cũng có thể sắp xếp kết quả của một $text Tìm kiếm. Xem MongoDB $sort để làm ví dụ.

$orderBy Công cụ sửa đổi truy vấn

$orderBy công cụ sửa đổi truy vấn có thể được sử dụng ở một trong hai hình thức.

Như thế này:

db.employees.find( { $query: {}, $orderBy: { salary: 1 } } )

Hoặc như thế này ::

db.employees.find()._addSpecial( "$orderby", { salary : 1 } )

$orderBy công cụ sửa đổi truy vấn không được dùng nữa trong mongo shell kể từ v3.2, nhưng tôi vẫn quyết định đưa nó vào đây. Xem tài liệu MongoDB để biết thêm thông tin.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bảo mật Pre-Emptive với Ghi nhật ký Kiểm tra cho MongoDB

  2. MongoDB:Sử dụng ID của tài liệu ở nơi công cộng có an toàn không?

  3. MongoDB - phân trang

  4. Lưu trữ các mối quan hệ bạn bè trong MongoDB?

  5. Tổng quan về các giao dịch ACID nhiều tài liệu trong MongoDB và cách sử dụng chúng