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)
Esto 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)
para 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 solo hay un usuario más en su base de datos, no se preocupe; MongoDB es lo suficientemente inteligente como para devolver solo 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 arbitraria PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
que no se puede hablar directamente como a cómo emplear este método en Ruby on Rails, pero sospecho que la biblioteca de Ruby MongoDB expone estos métodos .
Gracias, parece que hace el trabajo, pero ahora Ruby se queja del parámetro omitir debe ser int, suspiro, gracias :) – RailsSon
he leído NO uso 'skip()', ya que los rangos funcionan mejor para la paginación. –
¿Existe una mejor alternativa para omitir() @tq? – film42