0
我是Couchbase的新手,我正在努力獲得一個複合索引來做我想做的事。用例是這樣的:在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字段設置一個記錄,因此有它的時間字段都設置爲零。我認爲作爲一個第一次測試,我可以篩選出結果,我把在以下幾點:
startkey = ["a",2012,0,0,0,0,0]
endkey = ["Z",2014,0,0,0,0,0]
雖然列表是由「身份證」它沒有任何過濾排序!誰能告訴我我做錯了什麼?是否有更好的複合視圖來實現這些結果?
但我不明白的是,如果我不帶字符串組件,而是隻使用日期和時間的各個方面的數組元素,我可以通過使用start/end_key來過濾到數組的任何元素,它看起來也被用於排序目的。 – ken
是的。 Couchbase按鍵排序結果,所以如果你有像'[doc.a,doc.b,doc.c]這樣的複雜鍵,'docs將首先按doc.a排序,那麼具有相同doc.a的值將按doc排序.b等。如果'startkey:['a','b','c']'和'endkey:['z','x','c']'couchbase查找所有隻能服務的密鑰,則同樣的行爲用於過濾第一個條件。但是如果你在開始/結束鍵中有相同的值,比如'['a','b']'和'['a','x']'couchbase將會選擇'doc.a ='a' 'doc.b ='b'..'x''。 – m03geek