Paginację w MongoDB można uzyskać za pomocą kombinacji limit()
i skip()
.
Załóżmy na przykład, że w naszej aktywnej bazie danych mamy kolekcję o nazwie użytkownicy.
>> db.users.find().limit(3)
Pobiera to dla nas listę pierwszych trzech dokumentów użytkownika. Uwaga, to w zasadzie to samo, co pisanie:
>> db.users.find().skip(0).limit(3)
Przez następne trzy możemy to zrobić:
>> db.users.find().skip(3).limit(3)
Pomija to pierwsze trzy rekordy użytkownika i daje nam następne trzy. Jeśli w Twojej bazie danych jest jeszcze tylko jeden użytkownik, nie martw się; MongoDB jest na tyle sprytny, że zwraca tylko obecne dane i nie ulega awarii.
Można to uogólnić w ten sposób i byłoby to z grubsza równoważne temu, co zrobiłbyś w aplikacji internetowej. Zakładając, że mamy zmienne o nazwie PAGE_SIZE
który jest ustawiony na 3 i arbitralny PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Nie mogę mówić bezpośrednio, jak zastosować tę metodę w Ruby on Rails, ale podejrzewam, że biblioteka Ruby MongoDB ujawnia te metody.