MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie paginiert man mit Mongoose in Node.js?

Ich bin sehr enttäuscht von den akzeptierten Antworten auf diese Frage. Dies wird nicht skaliert. Wenn Sie das Kleingedruckte auf cursor.skip( ) lesen:

Die Methode cursor.skip() ist oft teuer, da der Server vom Anfang der Sammlung oder des Indexes gehen muss, um den Offset oder die Position zu überspringen, bevor er mit der Rückgabe des Ergebnisses beginnt. Wenn der Offset (z. B. pageNumber oben) zunimmt, wird cursor.skip() langsamer und CPU-intensiver. Bei größeren Sammlungen kann cursor.skip() IO-gebunden werden.

Um eine skalierbare Paginierung zu erreichen, kombinieren Sie ein limit( ) zusammen mit mindestens einem Filterkriterium, ein createdOn-Datum eignet sich für viele Zwecke.

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