Я пытаюсь использовать 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
Моя проблема в том, что мне нужно делать кучу этих вещей одновременно. Я хочу фильтровать на основе категории, а также тега. Я должен иметь возможность фильтровать только документы с категорией "fun" и тегом "couchdb". Я хочу отсортировать результаты фильтрации по ранжированию в порядке убывания, затем по дате в порядке возрастания, затем по названию в алфавитном порядке.
Как создать одно представление, которое объединяет все эти сортировки и фильтрации?