Việc phân trang trong MongoDB có thể được thực hiện bằng cách sử dụng kết hợp limit()
và skip()
.
Ví dụ:giả sử chúng tôi có một tập hợp được gọi là người dùng trong cơ sở dữ liệu đang hoạt động của chúng tôi.
>> db.users.find().limit(3)
Thao tác này truy xuất danh sách ba tài liệu người dùng đầu tiên cho chúng tôi. Lưu ý, điều này về cơ bản giống như cách viết:
>> db.users.find().skip(0).limit(3)
Đối với ba bước tiếp theo, chúng ta có thể thực hiện điều này:
>> db.users.find().skip(3).limit(3)
Điều này sẽ bỏ qua ba bản ghi người dùng đầu tiên và cho chúng ta ba bản ghi tiếp theo. Nếu chỉ có một người dùng nữa trong cơ sở dữ liệu của bạn, đừng lo lắng; MongoDB đủ thông minh để chỉ trả về dữ liệu hiện có và sẽ không bị lỗi.
Điều này có thể được khái quát như vậy, và sẽ gần tương đương với những gì bạn sẽ làm trong một ứng dụng web. Giả sử chúng ta có các biến được gọi là PAGE_SIZE
được đặt thành 3 và PAGE_NUMBER
tùy ý :
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Tôi không thể nói trực tiếp về cách sử dụng phương thức này trong Ruby on Rails, nhưng tôi nghi ngờ thư viện Ruby MongoDB để lộ các phương thức này.