Paginering i MongoDB kan åstadkommas genom att använda en kombination av limit()
och skip()
.
Anta till exempel att vi har en samling som kallas användare i vår aktiva databas.
>> db.users.find().limit(3)
Detta hämtar en lista över de tre första användardokumenten åt oss. Observera att detta är i huvudsak samma sak som att skriva:
>> db.users.find().skip(0).limit(3)
För de kommande tre kan vi göra detta:
>> db.users.find().skip(3).limit(3)
Detta hoppar över de tre första användarposterna och ger oss de tre nästa. Om det bara finns en användare till i din databas, oroa dig inte; MongoDB är smart nog att bara returnera data som finns och inte kraschar.
Detta kan generaliseras på det sättet, och skulle vara ungefär likvärdigt med vad du skulle göra i en webbapplikation. Förutsatt att vi har variabler som heter PAGE_SIZE
som är inställd på 3 och en godtycklig PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Jag kan inte tala direkt om hur man använder den här metoden i Ruby on Rails, men jag misstänker att Ruby MongoDB-biblioteket avslöjar dessa metoder.