Как Себастьян сказал вам необходимо использовать функцию списка, чтобы сделать это в Couch.
Если вы думаете об этом, это то, что делает MySQL. Его оптимизатор запросов будет выбирать индекс в вашей таблице, он будет сканировать диапазон из этого индекса, загружать то, что ему нужно в память, и выполнять логику запроса.
В Couch вид - ваш индекс B-дерева, а функция списка может реализовать любую логику, в которой вы нуждаетесь. Его можно использовать для выталкивания HTML вместо JSON, но его также можно использовать для фильтрации/сортировки вывода вашего представления и до конца выплюнуть JSON. Это может не очень хорошо масштабироваться для миллионов документов, но MySQL может и не быть.
Так что ваши варианты являются те, Себастьян выделены:
просмотра сортирует по дате, запрос выбирает диапазон дат и функция загружает список все в память и виды по электронной почте/и др.
просмотров сортировать по электронной почте/etc, функция списка фильтрует все вне диапазона дат.
Какой из них выбрать, зависит от ваших данных и архитектуры.
С помощью опции 1 вы можете полностью исключить функцию списка: получить все необходимые данные из представления за один раз (с include_docs) и отсортировать клиентскую сторону. Вот как вы обычно используете Couch.
Если вам нужна эта серверная часть, вам понадобится ваша функция списка, чтобы загрузить каждый соответствующий документ в массив, а затем отсортировать его и сериализовать JSON. Это, очевидно, разваливается на части, если есть много подходящих документов, которые они даже не вписываются в память или не занимают много времени.
Вариант 2 сканирует предварительно заказанные документы и отправляет только те, которые соответствуют датам. Сделано правильно, это позволяет не загружать все в память. OTOH может сканировать слишком много документов, уничтожая ваш диск IO.
Если диапазон дат «очень различен» (несколько документов проходят тест), вариант 1 работает лучше всего; в противном случае (большинство документов проходит) вариант 2 может быть лучше. Помните, что в то время, когда требуется загрузить бесполезный документ с диска (вариант 2), вы можете сортировать десятки документов в памяти, если они поместились в памяти (вариант 1). Кроме того, чем больше индексов, тем больше дискового пространства используется, и чем больше записей замедляется.
Спасибо за отличное объяснение для меня! – Elena