Die Paginierung in MongoDB kann durch die Verwendung einer Kombination aus limit()
erreicht werden und skip()
.
Angenommen, wir haben eine Sammlung namens Benutzer in unserer aktiven Datenbank.
>> db.users.find().limit(3)
Dadurch wird eine Liste der ersten drei Benutzerdokumente für uns abgerufen. Beachten Sie, dass dies im Wesentlichen dasselbe ist wie das Schreiben von:
>> db.users.find().skip(0).limit(3)
Für die nächsten drei können wir Folgendes tun:
>> db.users.find().skip(3).limit(3)
Dadurch werden die ersten drei Benutzerdatensätze übersprungen und wir erhalten die nächsten drei. Wenn in Ihrer Datenbank nur noch ein Benutzer vorhanden ist, machen Sie sich keine Sorgen; MongoDB ist intelligent genug, um nur vorhandene Daten zurückzugeben, und stürzt nicht ab.
Dies kann so verallgemeinert werden und würde ungefähr dem entsprechen, was Sie in einer Webanwendung tun würden. Angenommen, wir haben Variablen namens PAGE_SIZE
die auf 3 gesetzt ist, und eine beliebige PAGE_NUMBER
:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Ich kann nicht direkt sagen, wie diese Methode in Ruby on Rails eingesetzt wird, aber ich vermute, dass die Ruby MongoDB-Bibliothek diese Methoden offen legt.