Używam MongoDB i RoR do przechowywania danych logowania. Wyciągam dane i szukam wyników na stronie. Czy ktoś zrobił stronicowanie z MongoDB lub zna jakieś zasoby online, które mogłyby pomóc mi zacząć?Paginacja z MongoDB
zdrowie
Eef
Używam MongoDB i RoR do przechowywania danych logowania. Wyciągam dane i szukam wyników na stronie. Czy ktoś zrobił stronicowanie z MongoDB lub zna jakieś zasoby online, które mogłyby pomóc mi zacząć?Paginacja z MongoDB
zdrowie
Eef
Stronicowanie w MongoDB można osiągnąć stosując kombinację limit()
i skip()
.
Załóżmy na przykład, że mamy kolekcję o nazwie użytkownicy w naszej aktywnej bazie danych.
>> db.users.find().limit(3)
Powoduje wyświetlenie dla nas listy pierwszych trzech dokumentów użytkownika. Uwaga, to jest w zasadzie takie same jak pisanie:
>> db.users.find().skip(0).limit(3)
przez następne trzy, możemy to zrobić:
>> db.users.find().skip(3).limit(3)
ten pomija pierwszych trzech rejestrów użytkowników, a daje nam następne trzy. Jeśli w bazie danych jest tylko jeden użytkownik, nie martw się; MongoDB jest wystarczająco inteligentny, aby tylko zwracać dane, które są obecne i nie ulega awarii.
Można to uogólnić tak, jak jest, i byłoby mniej więcej podobne do tego, co zrobiłbyś w aplikacji internetowej. Zakładając, że mamy zmienne zwane PAGE_SIZE
który jest ustawiony na 3, a dowolna 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, biblioteka Ruby MongoDB naraża tych metod .
Dzięki, Wydaje się, że wykonuję zadanie, ale teraz Ruby narzeka, że parametr pominięcia musi być int, westchnienie, dziękuję za to :) – RailsSon
Przeczytałem DONT użyj 'skip()', ponieważ zakresy działają lepiej na paginację. –
Czy istnieje lepsza alternatywa dla pominięcia() @tq? – film42