Как получить документы с использованием запроса оптимального диапазона с Mongo Expression в случае Couch DB?

Предположим, у меня есть 200 документов в моей базе данных с именем «person», и я хочу получить документы в диапазоне от 60 до 70, тогда как мне поступить в случае CouchDB, сейчас я использую выражение mongo и параметр «skip» для ранжирования запросов, но как только размер пропуска увеличивается, время выполнения запроса также увеличивается, есть ли альтернатива параметру «пропустить»?
В RDBMS мы можем легко получать данные, используя нижний предел и верхний предел, но как мне поступить в случае CouchDB?

Вот мой запрос

$getDocs = '{
"selector": {
"name": {"$ne": "null"}
},
"fields": ["_id", "_rev", "name", "email" ],
"sort": [{"name": "asc" }],
"limit": 10,
"skip": '.$skip.'
}';

Я пытаюсь сделать нумерацию страниц с PHP и CouchDB, используя Mango Expression и показывая 10 записей на странице.

Посмотреть изображение когда вы нажимаете на изображение, которое вы видите в моем URL-адресе, я нахожусь на странице 7, что означает, что мне нужно получить документы с 61 по 70, и для этого я использую приведенный выше запрос. В приведенном выше запросе я передаю лимит, равный 10, поскольку мне нужно показать только 10 документов на страницу, а также я использую пропуск для пропуска 60 документов, поскольку я нахожусь на странице 7. Таким образом, проблема возникла, как только Количество страниц увеличивается, количество пропускаемых документов также увеличивается, поэтому увеличивается время выполнения запроса. Предположим, что если я на странице 1500, то на странице 1500 мне нужно показать документы в диапазоне от 15001 до 15010, и для этого мне нужно пропустить 15000 документов и пропуск такого количества документов занимают время почти 7 секунд, что довольно много. Так есть ли способ решить эту проблему?

-1

Решение

Для запросов Mango вы должны использовать закладки. Полная документация может быть найдена Вот

Предварительный просмотр:

Манговые запросы поддерживают разбиение на страницы через поле закладок. Каждый ответ _find содержит закладку — токен, который CouchDB использует, чтобы определить, с какого места возобновить выполнение последующих запросов. Чтобы получить следующий набор результатов запроса, добавьте закладку, полученную в предыдущем ответе, к следующему запросу. Не забудьте оставить селектор неизменным, иначе вы получите неожиданные результаты. Для разбивки на страницы в обратном направлении вы можете использовать предыдущую закладку, чтобы вернуть предыдущий набор результатов.

Обратите внимание, что наличие закладки не гарантирует наличия большего количества результатов. Вы можете проверить, достигли ли вы конца набора результатов, сравнив число возвращаемых результатов с запрошенным размером страницы — если результаты возвращены < предел, больше нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector