A paginação no MongoDB pode ser realizada usando uma combinação de
limit()
e skip()
. Por exemplo, suponha que temos uma coleção chamada users em nosso banco de dados ativo.
>> db.users.find().limit(3)
Isso recupera uma lista dos três primeiros documentos do usuário para nós. Observe que isso é essencialmente o mesmo que escrever:
>> db.users.find().skip(0).limit(3)
Para os próximos três, podemos fazer isso:
>> db.users.find().skip(3).limit(3)
Isso pula os três primeiros registros de usuário e nos dá os próximos três. Se houver apenas mais um usuário em seu banco de dados, não se preocupe; O MongoDB é inteligente o suficiente para retornar apenas dados presentes e não travará.
Isso pode ser generalizado assim e seria aproximadamente equivalente ao que você faria em um aplicativo da web. Assumindo que temos variáveis chamadas
PAGE_SIZE
que é definido como 3 e um PAGE_NUMBER
arbitrário :>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Não posso falar diretamente sobre como empregar esse método no Ruby on Rails, mas suspeito que a biblioteca Ruby MongoDB exponha esses métodos.