sql >> Database >  >> NoSQL >> MongoDB

MongoDB variërende paginering

Goede vraag!

"Hoeveel is te veel?" - dat hangt natuurlijk af van uw gegevensgrootte en prestatie-eisen. Persoonlijk voel ik me ongemakkelijk als ik meer dan 500-1000 records oversla.

Het daadwerkelijke antwoord hangt af van uw vereisten. Dit is wat moderne sites doen (of in ieder geval sommige ervan).

Ten eerste ziet de navigatiebalk er als volgt uit:

1 2 3 ... 457

Ze krijgen het uiteindelijke paginanummer van het totale aantal records en het paginaformaat. Laten we naar pagina 3 springen. Dat houdt in dat er wat overgeslagen wordt van de eerste plaat. Wanneer de resultaten binnenkomen, kent u de ID van het eerste record op pagina 3.

1 2 3 4 5 ... 457

Laten we wat meer overslaan en naar pagina 5 gaan.

1 ... 3 4 5 6 7 ... 457

Je snapt het idee. Op elk punt ziet u de eerste, laatste en huidige pagina's, en ook twee pagina's vooruit en achteruit vanaf de huidige pagina.

Vragen

var current_id; // id of first record on current page.

// go to page current+N
db.collection.find({_id: {$gte: current_id}}).
              skip(N * page_size).
              limit(page_size).
              sort({_id: 1});

// go to page current-N
// note that due to the nature of skipping back,
// this query will get you records in reverse order 
// (last records on the page being first in the resultset)
// You should reverse them in the app.
db.collection.find({_id: {$lt: current_id}}).
              skip((N-1)*page_size).
              limit(page_size).
              sort({_id: -1});


  1. Hoe gebruik je Mongoose zonder een schema te definiëren?

  2. 5 manieren om rijen te selecteren met de maximale waarde voor hun groep in SQL

  3. Hoe Node.js te gebruiken om een ​​SSH-tunnelverbinding te maken met een MongoDB-database

  4. Rails, Sidekiq - Redis NOAUTH