В общем случае установление индексов на нескольких полях возрастает по мере увеличения количества полей.
Мой главный вопрос: do Status
и Job_category
нужно также запрашивать динамически? Если нет, то ваш взгляд прост:
function (doc) {
if (doc.Status === 'Completed' && doc.Job_category === 'Installation') {
emit(doc.DateTime); // this line may change depending on how you break up and emit the datetimes
}
}
Представления довольно дешево, (в зависимости от размера базы данных), так что не бойтесь установить несколько, которые охватывают различные случаи. Я ожидал бы что-то вроде Status
, чтобы иметь предопределенный список доступных опций, так как он соответствует Job_category
, который кажется может быть больше связан с пользовательским вводом.
Если вам нужны эти поля должны быть динамичными, вы можете просто добавить их в индекс, а также:
function (doc) {
emit([ doc.Status, doc.Job_category, doc.DateTime ]);
}
Затем вы можете использовать массив в качестве start_key
. Например:
start_key=["Completed", "Installation", ...]
tl; dr: использовать «статические» виды, где у вас есть предопределенный список значений для заданного поля. хотя можно запросить «динамические» представления с несколькими полями, сложность растет очень быстро.
Это именно то, что я искал, thx много для вас ответ. – macrog