Диапазон на основе пейджинга mongodb - PullRequest
11 голосов
/ 24 июля 2011

в документации mongodb написано: (источник)

К сожалению, пропуск может быть (очень) дорогостоящим и требует от сервера идти от начала коллекции, или индекса, чтобы добраться до смещение / пропуск позиции, прежде чем он сможет начать возвращать страницу данных (Предел). По мере увеличения номера страницы пропуск будет медленнее и больше Интенсивный процессор, и, возможно, связанный с IO, с большими коллекциями. Спектр Пейджинг на основе обеспечивает лучшее использование индексов, но не позволяет легко перейти на определенную страницу.

Что такое пейджинг на основе диапазона и где находится документация для него?

1 Ответ

17 голосов
/ 24 июля 2011

Основная идея заключается в том, чтобы записать подкачку в шаблон предиката запроса.

Например, если вы перечисляете сообщения на форуме по дате и хотите показать следующую страницу, используйте дату последнего сообщения втекущая страница в качестве предиката.MongoDB может использовать индекс, построенный на поле даты.

//older posts
db.forum_posts.find({date: {$lt: ..last_post_date..} }).sort({date: -1}).limit(20);

Конечно, это становится немного сложнее, если поле, которое вы используете для сортировки, не уникально.

...