私はCouchbaseを初めて使用し、複合インデックスを取得して目的を達成するのに苦労しています。ユースケースは次のとおりです。
- ドキュメントとして保存されている一連の「列挙」があります
- それぞれに「last_updated」フィールドがあり、ご想像のとおり、フィールドが最後に更新された時刻が格納されます
- 特定の日付以降に更新された列挙のみを表示できるようにしたいが、それでも列挙の名前でリストをソートしたい
次のような Couchbase ビューを作成しました。
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 フィールドが設定されていないため、時間フィールドがすべてゼロに設定されているレコードが 1 つあります。最初のテストとして、その結果を除外できると考え、次のように入力しました。
startkey = ["a",2012,0,0,0,0,0]
endkey = ["Z",2014,0,0,0,0,0]
リストは「id」でソートされていますが、何もフィルタリングしていません! 誰が私が間違っているのか教えてもらえますか? これらの結果を達成するためのより良い複合ビューはありますか?