2012-11-22 13 views
6

ich habe eine Frage über Paginierung mit Mongodb und Mongoengine. Ich habe eine Tabelle, die in Zukunft Millionen von Datensätzen haben wird. und ich page so.Wie funktioniert die Paginierung mit Mongoengine?

gut bin ich nicht sicher, ob dies richtig Ansatz

list = Books.objects.all() 
    paginator = DiggPaginator(list, 20, body = 10, tail = 2) 

hier i ganze Tisch geöffnet ist und tun dann die Paginierung und wir für die nächste Seite wieder oben Code ausgeführt und bringt die zweite oder eine beliebige Seite.

ist dieser korrekte Ansatz oder es gibt bessere Möglichkeiten, dies zu tun.

Antwort

16

Sie können skip und limit von QuerySet verwenden, um Paginierung zu erreichen.
Zum Beispiel, wenn Sie die zweite Seite mit einer Begrenzung von 10 Stück pro Seite anzeigen möchten, können Sie wie folgt tun:

page_nb = 2 
items_per_page = 10 

offset = (page_nb - 1) * items_per_page 

list = Books.objects.skip(offset).limit(items_per_page) 
+0

Bedeutet das, dass mein Ansatz nicht korrekt ist? oder das wird gut funktionieren, ohne den Server zusätzlich zu belasten. – user493550

+1

Mit 'Books.objects.all()' fordern Sie alle Dokumente aus der Tabelle an, wenn Ihre Tabelle also Millionen von Datensätzen enthält, die den Server belasten. Wie auch immer, es sollte trivial sein, einen Benchmark zu setzen, um zu testen, was für Ihren Anwendungsfall am effektivsten ist. – Eric