MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zakres paginacji MongoDB

Dobre pytanie!

"Ile to za dużo?" - to oczywiście zależy od rozmiaru danych i wymagań dotyczących wydajności. Osobiście czuję się nieswojo, gdy pomijam ponad 500-1000 rekordów.

Rzeczywista odpowiedź zależy od Twoich wymagań. Oto, co robią nowoczesne witryny (a przynajmniej niektóre z nich).

Po pierwsze, pasek nawigacyjny wygląda tak:

1 2 3 ... 457

Otrzymują ostateczny numer strony z całkowitej liczby rekordów i rozmiaru strony. Przejdźmy do strony 3. Będzie to wymagało pominięcia od pierwszego rekordu. Po otrzymaniu wyników znasz identyfikator pierwszego rekordu na stronie 3.

1 2 3 4 5 ... 457

Pomińmy trochę więcej i przejdźmy do strony 5.

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

Masz pomysł. W każdym momencie widzisz pierwszą, ostatnią i bieżącą stronę, a także dwie strony do przodu i do tyłu od bieżącej strony.

Zapytania

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przekazany argument musi być pojedynczym ciągiem 12 bajtów

  2. Uwierzytelnianie mongodb z ciągiem połączenia

  3. Jak zaktualizować elementy tablicy zgodne z kryteriami w dokumencie MongoDB?

  4. Dlaczego błąd mongod jest martwy, ale podsys jest zablokowany i nie ma wystarczającej ilości wolnego miejsca na pliki dziennika w systemie Linux?

  5. odpytywanie kolekcji bez przekazywania schematu w manguście