Pagination avec MongoDB
-
20-09-2019 - |
Question
J'utilise MongoDB et RoR pour stocker des données de journalisation. Je tirais les données et à la recherche à la page des résultats. Quelqu'un at-il fait avec la pagination ou MongoDB connaissez des ressources en ligne qui pourrait aider à me commencer?
Vive
Eef
La solution
pagination dans MongoDB peut être réalisé en utilisant une combinaison de limit()
et skip()
.
Par exemple, supposons que nous avons une collection appelée utilisateurs dans notre base de données active.
>> db.users.find().limit(3)
extrait une liste des trois premiers documents de l'utilisateur pour nous. Notez que ceci est essentiellement le même que l'écriture:
>> db.users.find().skip(0).limit(3)
Pour les trois suivants, nous pouvons faire ceci:
>> db.users.find().skip(3).limit(3)
Cette saute au cours des trois premiers disques de l'utilisateur, et nous donne les trois suivants. S'il n'y a plus qu'un seul utilisateur dans votre base de données, ne vous inquiétez pas; MongoDB est assez intelligent pour retourner uniquement les données présentes, et ne plantera pas.
Ceci peut être généralisé comme si, et serait à peu près équivalent à ce que vous feriez dans une application web. En supposant que nous avons appelées variables PAGE_SIZE
qui est fixé à 3, et un PAGE_NUMBER
arbitraire:
>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
Je ne peux pas parler directement quant à la façon d'employer cette méthode en Ruby on Rails, mais je soupçonne que la bibliothèque Ruby MongoDB expose ces méthodes.