CouchDB сортировка и фильтрация в одном представлении

Я пытаюсь использовать CouchDB для нового приложения, и мне нужно создать представление, которое сортирует по нескольким полям, а также фильтрует по нескольким полям. Вот пример документа, я пропустил _id и _rev, чтобы сэкономить при печати.

{
    "title": "My Document",
    "date": 1279816057,
    "ranking": 5,
    "category": "fun",
    "tags": [
        "couchdb",
        "technology"
    ],
}

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

function(doc) {
    emit(doc.ranking, doc);
}

Я также узнал, что я могу легко фильтровать по таким полям, как категория

function(doc) {
    emit(doc.category, doc);
}

http://127.0.0.1:5984/database/_design/filter/_view/filter?key=%22fun%22

Моя проблема в том, что мне нужно делать кучу этих вещей одновременно. Я хочу фильтровать по категории, а также по тегу. Я должен быть в состоянии отфильтровать только документы с категорией «веселья» и тегом «couchdb». Я хочу отсортировать отфильтрованные результаты по рейтингу в порядке убывания, затем по дате в порядке возрастания, а затем по заголовку в алфавитном порядке.

Как я могу создать одно представление, которое объединяет всю эту сортировку и фильтрацию?

Ответы на вопрос(1)

Ваш ответ на вопрос