Paginação com MongoDB
-
20-09-2019 - |
Pergunta
Tenho usado MongoDB e RoR para armazenar dados de log.Estou retirando os dados e procurando paginar os resultados.Alguém já fez paginação com o MongoDB ou conhece algum recurso on-line que possa me ajudar a começar?
Saúde
Efe
Solução
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 ignora os três primeiros registros do usuário e nos dá os próximos três.Se houver apenas mais um usuário no seu banco de dados, não se preocupe;O MongoDB é inteligente o suficiente para retornar apenas os dados presentes e não travar.
Isso pode ser generalizado dessa forma e seria aproximadamente equivalente ao que você faria em um aplicativo da web.Supondo que temos variáveis chamadas PAGE_SIZE
que é definido como 3, e um arbitrário PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Não posso falar diretamente sobre como empregar esse método em Ruby on Rails, mas suspeito que a biblioteca Ruby MongoDB expõe esses métodos.