sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB varierade paginering

Bra fråga!

"Hur många är för många?" - det beror naturligtvis på din datastorlek och prestandakrav. Jag personligen känner mig obekväm när jag hoppar över mer än 500-1000 poster.

Det faktiska svaret beror på dina krav. Här är vad moderna webbplatser gör (eller åtminstone några av dem).

Först ser navbar ut så här:

1 2 3 ... 457

De får det slutliga sidnumret från totalt antal rekord och sidstorlek. Låt oss hoppa till sidan 3. Det kommer att innebära att man hoppar över från den första posten. När resultaten kommer, vet du id för första posten på sidan 3.

1 2 3 4 5 ... 457

Låt oss hoppa över några fler och gå till sidan 5.

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

Du förstår idén. Vid varje punkt ser du första, sista och nuvarande sidor, och även två sidor framåt och bakåt från den aktuella sidan.

Frågor

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. Hur man skapar RedisCacheManager i spring-data 2.0.x

  2. Jag försöker köra mongod server på ubuntu :undantag i initAndListen:29 Datakatalogen /data/db hittades inte., avslutas

  3. MongoDB $cos

  4. Lägg till ny validator till befintlig samling