Trong MongoDB, $orderBy
công cụ sửa đổi truy vấn sắp xếp các kết quả của một truy vấn theo thứ tự tăng dần hoặc giảm dần.
$orderBy
chấp nhận một tài liệu chỉ định trường để sắp xếp và thứ tự sắp xếp. Thứ tự sắp xếp có thể là 1
để tăng dần hoặc -1
để giảm dần.
$orderBy
đã không được chấp nhận trong mongo
shell kể từ v3.2. Sử dụng cursor.sort()
thay vào đó.
Dữ liệu mẫu
Giả sử chúng ta có một bộ sưu tập có tên là pets
với các tài liệu sau:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }
Sắp xếp theo thứ tự tăng dần
Để sắp xếp theo thứ tự tăng dần, chúng tôi sử dụng 1
cho thứ tự sắp xếp.
Dưới đây là ví dụ về truy vấn sử dụng $orderBy
công cụ sửa đổi truy vấn để sắp xếp bộ sưu tập đó theo weight
trường theo thứ tự tăng dần.
db.pets.find( { $query: {}, $orderBy: { weight: 1 } } )
Kết quả:
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 }
Sắp xếp theo thứ tự giảm dần
Để sắp xếp theo thứ tự giảm dần, chúng tôi sử dụng -1
cho thứ tự sắp xếp.
db.pets.find( { $query: {}, $orderBy: { weight: -1 } } )
Kết quả:
{ "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 } { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
Một hình thức thay thế
$orderBy
công cụ sửa đổi truy vấn cũng có thể được sử dụng với biểu mẫu sau:
db.pets.find()._addSpecial( "$orderby", { weight : 1 } )
Thông tin thêm
Như đã đề cập, $orderBy
công cụ sửa đổi truy vấn không được chấp nhận trong mongo
shell kể từ v3.2. Sử dụng cursor.sort()
thay vào đó.
Xem tài liệu MongoDB để biết thêm thông tin.