Pagination trong MongoDB có thể được thực hiện bằng cách sử dụng một sự kết hợp của limit()
và skip()
.
Ví dụ: giả sử chúng tôi có một bộ sưu tập được gọi là người dùng trong cơ sở dữ liệu hoạt động của chúng tôi.
>> db.users.find().limit(3)
Thao tác này sẽ 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 ý, đây thực chất là giống như viết:
>> db.users.find().skip(0).limit(3)
Trong ba hôm sau, chúng ta có thể làm điều này:
>> db.users.find().skip(3).limit(3)
này bỏ qua trong ba hồ sơ người dùng đầu tiên, và cho chúng ta ba tới. Nếu chỉ có thêm một người dùng 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 tại và sẽ không bị lỗi.
Điều này có thể được khái quát hóa như vậy và 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
mà được thiết lập đến 3, và một tùy PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Tôi không thể nói chuyện trực tiếp như thế nào để sử dụng phương pháp này trong Ruby on Rails, nhưng tôi nghi ngờ các thư viện Ruby MongoDB cho thấy những phương pháp .
Nguồn
2010-01-14 06:40:01
Cảm ơn, Điều đó dường như thực hiện công việc nhưng bây giờ Ruby đang phàn nàn tham số bỏ qua là int, sigh, thanks for that :) – RailsSon
tôi đã đọc DONT sử dụng 'skip()', vì phạm vi hoạt động tốt hơn cho phân trang. –
Có cách nào khác tốt hơn để bỏ qua() @tq không? – film42