Paginering in MongoDB kan worden bereikt door een combinatie van limit()
. te gebruiken en skip()
.
Stel bijvoorbeeld dat we een verzameling hebben met de naam gebruikers in onze actieve database.
>> db.users.find().limit(3)
Hiermee wordt voor ons een lijst met de eerste drie gebruikersdocumenten opgehaald. Let op, dit is in wezen hetzelfde als schrijven:
>> db.users.find().skip(0).limit(3)
Voor de volgende drie kunnen we dit doen:
>> db.users.find().skip(3).limit(3)
Dit slaat de eerste drie gebruikersrecords over en geeft ons de volgende drie. Als er nog maar één gebruiker in uw database is, hoeft u zich geen zorgen te maken; MongoDB is slim genoeg om alleen gegevens terug te sturen die aanwezig zijn, en zal niet crashen.
Dit kan zo worden gegeneraliseerd en zou ongeveer gelijk zijn aan wat u in een webtoepassing zou doen. Ervan uitgaande dat we variabelen hebben genaamd PAGE_SIZE
die is ingesteld op 3, en een willekeurige PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Ik kan niet direct zeggen hoe deze methode in Ruby on Rails moet worden gebruikt, maar ik vermoed dat de Ruby MongoDB-bibliotheek deze methoden blootlegt.