Я новичок в Couchbase и изо всех сил пытаюсь заставить составной индекс делать то, что я хочу. Вариант использования таков:
- У меня есть набор «Перечисления», которые хранятся в виде документов
- У каждого есть поле «last_updated», которое, как вы уже догадались, хранит время последнего обновления поля.
- Я хочу иметь возможность показывать только те перечисления, которые были обновлены с определенной даты, но все же сортировать список по имени перечисления.
Я создал Couchbase View следующим образом:
function (doc, meta) {
var time_array;
if (doc.doc_type === "enum") {
if (doc.last_updated) {
time_array = doc.last_updated.split(/[- :]/);
} else {
time_array = [0,0,0,0,0,0];
}
for(var i=0; i<time_array.length; i++) { time_array[i] = parseInt(time_array[i], 10); }
time_array.unshift(meta.id);
emit(time_array, null);
}
}
У меня есть одна запись, в которой не установлено поле last_updated, и поэтому все поля времени установлены на ноль. Я подумал, что в качестве первого теста я мог бы отфильтровать этот результат, и я добавил следующее:
startkey = ["a",2012,0,0,0,0,0]
endkey = ["Z",2014,0,0,0,0,0]
Хотя список отсортирован по идентификатору, он ничего не фильтрует! Может ли кто-нибудь сказать мне, что я делаю неправильно? Есть ли лучший составной вид для достижения этих результатов?