MongoDB Truy vấn Sort() & Limit() theo thứ tự ví dụ
⚡ Tóm tắt thông minh
MongoDB Các bộ điều chỉnh truy vấn Sort() và Limit() kiểm soát số lượng tài liệu mà một truy vấn trả về và thứ tự hiển thị. Phương thức limit() giới hạn số lượng kết quả, trong khi sort() sắp xếp các tài liệu theo thứ tự tăng dần hoặc giảm dần bằng cách sử dụng các giá trị 1 hoặc -1.

Sửa đổi truy vấn là gì?
Mongo DB cung cấp các trình sửa đổi truy vấn như mệnh đề 'limit' và 'Orders' để cung cấp tính linh hoạt hơn khi thực hiện truy vấn. Chúng ta sẽ xem xét các trình sửa đổi truy vấn sau
MongoDB Giới hạn kết quả truy vấn
Trình sửa đổi này được sử dụng để giới hạn số lượng tài liệu được trả về trong tập kết quả cho một truy vấn. Ví dụ sau đây cho thấy cách thực hiện điều này.
db.Employee.find().limit(2).forEach(printjson);
Code Giải thích
- Đoạn mã trên sử dụng hàm find trả về tất cả tài liệu trong bộ sưu tập nhưng sau đó sử dụng mệnh đề giới hạn để giới hạn số lượng tài liệu được trả về chỉ còn 2.
Đầu ra
Nếu lệnh được thực hiện thành công, Đầu ra sau sẽ được hiển thị
Kết quả đầu ra cho thấy rõ ràng rằng vì có công cụ sửa đổi giới hạn nên nhiều nhất chỉ có 2 bản ghi được trả về như một phần của tập kết quả dựa trên ObjectId theo thứ tự tăng dần.
MongoDB Sắp xếp theo thứ tự giảm dần
Người ta có thể chỉ định thứ tự các tài liệu được trả về dựa trên thứ tự tăng dần hoặc giảm dần của bất kỳ khóa nào trong bộ sưu tập. Ví dụ sau đây cho thấy cách thực hiện điều này.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code Giải thích
- Đoạn mã trên sử dụng hàm sắp xếp trả về tất cả tài liệu trong bộ sưu tập nhưng sau đó sử dụng công cụ sửa đổi để thay đổi thứ tự trả về các bản ghi. Ở đây -1 chỉ ra rằng chúng tôi muốn trả lại tài liệu dựa trên thứ tự giảm dần của ID nhân viên.
Nếu lệnh được thực hiện thành công, Đầu ra sau sẽ được hiển thị
Đầu ra
Kết quả đầu ra hiển thị rõ ràng các tài liệu được trả về theo thứ tự giảm dần của Mã nhân viên.
Thứ tự tăng dần được xác định bởi giá trị 1.
MongoDB Sắp xếp theo thứ tự tăng dần
Tương tự như cách hàm sort() có thể trả về các tài liệu theo thứ tự giảm dần, nó cũng có thể trả về chúng theo thứ tự tăng dần. Thứ tự tăng dần được xác định bởi giá trị 1 trong đối tượng sort. Điều này sắp xếp các tài liệu từ giá trị nhỏ nhất đến lớn nhất, rất hữu ích khi liệt kê các bản ghi từ cũ nhất đến mới nhất hoặc từ A đến Z.
Ví dụ sau sắp xếp tất cả các tài liệu nhân viên theo EmployeeID theo thứ tự tăng dần:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Cách thức truy vấn hoạt động như sau:
- Hàm find() truy xuất tất cả các tài liệu trong bộ sưu tập Employee.
- sort({Employeeid:1}) sắp xếp kết quả theo trường Employeeid, từ ID thấp nhất đến cao nhất.
- forEach(printjson) in từng tài liệu dưới dạng JSON dễ đọc.
Khi bạn chạy lệnh này, các tài liệu sẽ xuất hiện theo thứ tự tăng dần của Employeeid. Thứ tự tăng dần cũng là thứ tự mặc định, vì vậy nếu để giá trị là 1 thì sẽ hiển thị thứ tự từ thấp đến cao theo trường đã chọn. Để đảo ngược kết quả, chỉ cần thay đổi giá trị từ 1 thành -1, và bạn cũng có thể sử dụng hàm limit() để chỉ trả về một vài bản ghi được sắp xếp đầu tiên.
MongoDB Skip() để phân trang
Phương thức skip() cho biết MongoDB Hàm `skip()` bỏ qua một số lượng tài liệu nhất định trước khi trả về phần còn lại. Bản thân `skip()` hiếm khi hữu ích, nhưng khi kết hợp với `limit()`, nó tạo ra phân trang, cho phép bạn hiển thị kết quả từng trang một.
Ví dụ sau bỏ qua hai nhân viên đầu tiên và trả về hai nhân viên tiếp theo:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Để xây dựng hệ thống điều hướng từng trang, hãy làm theo mẫu sau:
- Hãy quyết định kích thước trang, ví dụ: 2 tài liệu trên một trang.
- Nhân kích thước trang với số trang trừ đi một để có được giá trị bỏ qua.
- Truyền giá trị đó cho hàm skip() và kích thước trang cho hàm limit().
Ví dụ, trang 1 sử dụng skip(0).limit(2), trang 2 sử dụng skip(2).limit(2) và trang 3 sử dụng skip(4).limit(2). Luôn thêm sort() để thứ tự tài liệu được giữ ổn định trên các trang. Lưu ý rằng các giá trị skip rất lớn có thể làm chậm các tập hợp lớn, bởi vì MongoDB Nó vẫn quét và loại bỏ các tài liệu bị bỏ qua; việc phân trang theo phạm vi sẽ nhanh hơn ở quy mô lớn.
Sắp xếp theo nhiều trường trong MongoDB
MongoDB Bạn có thể sắp xếp theo nhiều trường cùng một lúc. Bạn liệt kê các trường trong đối tượng sắp xếp theo thứ tự ưu tiên, và MongoDB Sắp xếp theo trường đầu tiên, sau đó sử dụng trường tiếp theo để phân định thứ tự khi có sự trùng lặp, và cứ thế tiếp tục.
Ví dụ sau sắp xếp nhân viên theo tên theo thứ tự tăng dần, và đối với những nhân viên có cùng tên, sắp xếp theo EmployeeID theo thứ tự giảm dần:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Thứ tự các khóa trong đối tượng sắp xếp rất quan trọng: EmployeeName được áp dụng trước vì nó xuất hiện đầu tiên. Việc sắp xếp đa khóa này hữu ích cho các báo cáo mà bạn nhóm theo một trường và sau đó xếp hạng trong mỗi nhóm. Để đạt hiệu suất tốt nhất trên các tập dữ liệu lớn, hãy tạo một chỉ mục phức hợp khớp với các trường và hướng được sử dụng trong quá trình sắp xếp.


