Пагинацията в MongoDB може да се осъществи с помощта на комбинация от limit()
и skip()
.
Например, приемете, че имаме колекция, наречена потребители в нашата активна база данни.
>> db.users.find().limit(3)
Това извлича за нас списък с първите три потребителски документа. Забележете, това по същество е същото като писането:
>> db.users.find().skip(0).limit(3)
За следващите три можем да направим това:
>> db.users.find().skip(3).limit(3)
Това прескача първите три потребителски записа и ни дава следващите три. Ако във вашата база данни има само още един потребител, не се притеснявайте; MongoDB е достатъчно интелигентен, за да връща само наличните данни и няма да се срине.
Това може да бъде обобщено по този начин и би било приблизително еквивалентно на това, което бихте направили в уеб приложение. Ако приемем, че имаме променливи, наречени PAGE_SIZE
който е зададен на 3 и произволен PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Не мога да говоря директно как да използвам този метод в Ruby on Rails, но подозирам, че библиотеката Ruby MongoDB разкрива тези методи.