La paginación en MongoDB se puede lograr usando 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)
Esto recupera una lista de los primeros tres documentos de usuario para nosotros. Tenga en cuenta que esto es esencialmente lo mismo que escribir:
>> db.users.find().skip(0).limit(3)
Para los próximos tres, podemos hacer esto:
>> db.users.find().skip(3).limit(3)
Esto salta los primeros tres registros de usuario y nos da los siguientes tres. Si solo hay un usuario más en tu base de datos, no te preocupes; MongoDB es lo suficientemente inteligente como para devolver solo los datos que están presentes y no fallará.
Esto se puede generalizar así y sería más o menos equivalente a lo que haría en una aplicación web. Asumiendo que tenemos variables llamadas PAGE_SIZE
que se establece en 3, y un PAGE_NUMBER
arbitrario :
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
No puedo hablar directamente sobre cómo emplear este método en Ruby on Rails, pero sospecho que la biblioteca Ruby MongoDB expone estos métodos.