Paginering i MongoDB kan opnås ved at bruge en kombination af limit()
og skip()
.
Antag for eksempel, at vi har en samling kaldet brugere i vores aktive database.
>> db.users.find().limit(3)
Dette henter en liste over de første tre brugerdokumenter til os. Bemærk, dette er stort set det samme som at skrive:
>> db.users.find().skip(0).limit(3)
For de næste tre kan vi gøre dette:
>> db.users.find().skip(3).limit(3)
Dette springer de første tre brugerregistreringer over og giver os de næste tre. Hvis der kun er én bruger mere i din database, så fortvivl ikke; MongoDB er smart nok til kun at returnere data, der er til stede, og vil ikke gå ned.
Dette kan generaliseres på denne måde, og det svarer nogenlunde til, hvad du ville gøre i en webapplikation. Forudsat at vi har variabler kaldet PAGE_SIZE
som er sat til 3, og en vilkårlig PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Jeg kan ikke tale direkte om, hvordan man bruger denne metode i Ruby on Rails, men jeg formoder, at Ruby MongoDB-biblioteket afslører disse metoder.