Нумерация страниц с MongoDB - PullRequest
17 голосов
/ 13 января 2010

Я использую MongoDB и RoR для хранения данных регистрации. Я вытаскиваю данные и ищу страницу результатов. Кто-нибудь делал пейджинг с MongoDB или знал какие-нибудь ресурсы в Интернете, которые могли бы помочь мне начать?

Приветствия

Eef

1 Ответ

37 голосов
/ 14 января 2010

Нумерация страниц в MongoDB может быть выполнена с помощью комбинации limit() и skip().

Например, предположим, что в нашей активной базе данных есть коллекция с именем users.

>> db.users.find().limit(3)

Получает список первых трех пользовательских документов для нас. Обратите внимание, это по сути то же самое, что и запись:

>> db.users.find().skip(0).limit(3)

Для следующих трех мы можем сделать это:

>> db.users.find().skip(3).limit(3)

Это пропускает первые три записи пользователя и дает нам следующие три. Если в вашей базе данных есть только один пользователь, не беспокойтесь; MongoDB достаточно умен, чтобы возвращать только данные, которые присутствуют, и не вылетит.

Это можно обобщить примерно так, и это будет примерно эквивалентно тому, что вы делаете в веб-приложении. Предполагая, что у нас есть переменные с именем PAGE_SIZE, которые установлены в 3, и произвольные PAGE_NUMBER:

>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)

Я не могу говорить напрямую о том, как использовать этот метод в Ruby on Rails, но я подозреваю, что библиотека Ruby MongoDB предоставляет эти методы.

...