La pagination dans MongoDB peut être réalisée en utilisant une combinaison de limit()
et skip()
.
Par exemple, supposons que nous ayons une collection appelée utilisateurs dans notre base de données active.
>> db.users.find().limit(3)
Cela récupère une liste des trois premiers documents utilisateur pour nous. Remarque, c'est essentiellement la même chose que d'écrire :
>> db.users.find().skip(0).limit(3)
Pour les trois suivants, nous pouvons faire ceci :
>> db.users.find().skip(3).limit(3)
Cela ignore les trois premiers enregistrements d'utilisateur et nous donne les trois suivants. S'il n'y a qu'un seul utilisateur de plus dans votre base de données, ne vous inquiétez pas; MongoDB est suffisamment intelligent pour ne renvoyer que les données présentes et ne plantera pas.
Cela peut être généralisé ainsi, et serait à peu près équivalent à ce que vous feriez dans une application Web. En supposant que nous ayons des variables appelées PAGE_SIZE
qui est défini sur 3, et un PAGE_NUMBER
arbitraire :
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Je ne peux pas dire directement comment utiliser cette méthode dans Ruby on Rails, mais je soupçonne que la bibliothèque Ruby MongoDB expose ces méthodes.