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

Qual è il modo migliore per eseguire l'impaginazione ajax con MongoDb e Nodejs?

L'approccio "salta e limita" non è molto efficiente quando si esegue il paging lontano nel set di dati. È effettivamente un algoritmo di Shlemiel il pittore.

Le query di intervallo sono molto più efficienti (se supportate da indici). Ad esempio, immaginiamo di visualizzare i tweet. La dimensione della tua pagina è 20 e sei a pagina 1000 e desideri caricare la pagina 1001.

Questa domanda

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)

è molto meno efficiente di

db.tweets.find({created_at: {$lt: last_displayed_date}}).
          sort({created_at: -1}).limit(20);

(a condizione che tu abbia l'indice su created_at ).

Ti viene l'idea:quando carichi una pagina, prendi nota del timestamp dell'ultimo tweet e usalo per interrogare la pagina successiva.