L'impaginazione in MongoDB può essere eseguita utilizzando una combinazione di limit()
e skip()
.
Ad esempio, supponiamo di avere una raccolta chiamata utenti nel nostro database attivo.
>> db.users.find().limit(3)
Questo recupera per noi un elenco dei primi tre documenti utente. Nota, questo è essenzialmente lo stesso di scrivere:
>> db.users.find().skip(0).limit(3)
Per i prossimi tre, possiamo farlo:
>> db.users.find().skip(3).limit(3)
Questo salta i primi tre record utente e ci dà i successivi tre. Se c'è solo un altro utente nel tuo database, non preoccuparti; MongoDB è abbastanza intelligente da restituire solo i dati presenti e non si arresta in modo anomalo.
Questo può essere generalizzato in questo modo e sarebbe più o meno equivalente a quello che faresti in un'applicazione web. Supponendo di avere variabili chiamate PAGE_SIZE
che è impostato su 3 e un PAGE_NUMBER
arbitrario :
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Non posso parlare direttamente di come utilizzare questo metodo in Ruby on Rails, ma sospetto che la libreria Ruby MongoDB esponga questi metodi.