MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come impaginare con Mongoose in Node.js?

Sono molto deluso dalle risposte accettate a questa domanda. Questo non scalerà. Se leggi la stampa fine su cursor.skip( ):

Il metodo cursor.skip() è spesso costoso perché richiede al server di camminare dall'inizio della raccolta o dell'indice per ottenere l'offset o saltare la posizione prima di iniziare a restituire il risultato. All'aumentare dell'offset (ad es. pageNumber sopra), cursor.skip() diventerà più lento e più intensivo per la CPU. Con raccolte più grandi, cursor.skip() può diventare legato a IO.

Per ottenere l'impaginazione in modo scalabile, combinare un limit() con almeno un criterio di filtro, una data createOn si adatta a molti scopi.

MyModel.find( { createdOn: { $lte: request.createdOnBefore } } )
.limit( 10 )
.sort( '-createdOn' )