Это старый вопрос, но я чувствую, что он все еще заслуживает достойного ответа (я потратил не менее 20 минут на поиск правильного ответа ...)
Я не одобряю другие предложения в ответах здесь и чувствую, что они неудовлетворительны. Особенно мне не нравится предложение сортировать строки в аппликативном слое, так как оно плохо масштабируется и не имеет отношения к случаю, когда вам нужно ограничить набор результатов в БД.
Лучший подход, с которым я столкнулся, предлагается в этой теме , и он предполагает, что если вам нужно отсортировать значения в запросе, вы должны добавить их в набор ключей и затем запросить ключ, используя диапазон - указание нужного ключа и ослабление диапазона значений. Например, если ваш ключ состоит из страны, штата и города:
emit([doc.address.country,doc.address.state, doc.address.city], doc);
Затем вы запрашиваете только страну и получаете бесплатную сортировку по остальным ключевым компонентам:
startkey=["US"]&endkey=["US",{}]
В случае, если вам также необходимо изменить порядок - обратите внимание, что простого определения descending: true
будет недостаточно. Вам на самом деле нужно поменять местами начальный и конечный порядок ключей, т.е.:1014*
startkey=["US",{}]&endkey=["US"]
См. Больше ссылок на этот великий источник .