La paginación con MongoDB
-
20-09-2019 - |
Pregunta
He estado usando MongoDB y RoR para almacenar datos de registro. Estoy sacando los datos y mirando a la página de los resultados. Alguien ha hecho la paginación con MongoDB o habilidades de cualquier línea de recursos que podrían ayudar me refiero a?
Saludos
Eef
Solución
paginación en MongoDB se puede lograr mediante el uso de una combinación de limit()
y skip()
.
Por ejemplo, supongamos que tenemos una colección llamada usuarios en nuestra base de datos activa.
>> db.users.find().limit(3)
Esta recupera una lista de los tres primeros documentos de usuario para nosotros. Tenga en cuenta, esto es esencialmente lo mismo que escribir:
>> db.users.find().skip(0).limit(3)
En los próximos tres, podemos hacer esto:
>> db.users.find().skip(3).limit(3)
Esto salta sobre los tres primeros registros de usuarios, y nos da las tres siguientes. Si sólo hay un usuario más en su base de datos, no se preocupe; MongoDB es lo suficientemente inteligente como para volver solamente los datos que están presentes, y no se bloqueará.
Esto se puede generalizar como tal, y sería más o menos equivalente a lo que haría en una aplicación web. Suponiendo que tenemos variables llamadas PAGE_SIZE
que se establece en 3, y un PAGE_NUMBER
arbitraria:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
No puedo hablar directamente como a cómo emplear este método en Ruby on Rails, pero sospecho que la biblioteca de Ruby MongoDB expone a estos métodos.