Stránkování v MongoDB lze provést pomocí kombinace limit()
a skip()
.
Předpokládejme například, že v naší aktivní databázi máme kolekci s názvem users.
>> db.users.find().limit(3)
Tím získáme seznam prvních tří uživatelských dokumentů. Všimněte si, že je to v podstatě stejné jako psaní:
>> db.users.find().skip(0).limit(3)
Pro další tři můžeme udělat toto:
>> db.users.find().skip(3).limit(3)
Tím přeskočíte první tři uživatelské záznamy a získáte další tři. Pokud je ve vaší databázi pouze jeden další uživatel, nemějte obavy; MongoDB je dostatečně chytrý na to, aby vrátil pouze přítomná data a nezhroutil se.
To lze takto zobecnit a bylo by to zhruba ekvivalentní tomu, co byste dělali ve webové aplikaci. Za předpokladu, že máme proměnné nazvané PAGE_SIZE
která je nastavena na 3 a libovolné PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Nemohu přímo mluvit o tom, jak použít tuto metodu v Ruby on Rails, ale mám podezření, že knihovna Ruby MongoDB tyto metody odhaluje.