我目前正在嘗試按三個值進行排序。但是,讓我們開始與文檔結構:CouchDB通過三個索引鍵查詢和過濾
{
_id: "DOCIDGOESHERE01",
type: "MESSAGE",
date: "2011-08-24 06:49:02",
author: "USERIDGOESHERE01",
receiver: ["USERIDGOESHERE02", "USERIDGOESHERE03"],
message: "ok let's do this"
}
主要目標是要查詢的CouchDB的消息選定用戶發送到一個特定的用戶和日期排序。一些消息沒有任何接收器,表明它們是公開的並且可以被任何人閱讀。
地圖功能我目前使用的是這樣的:
function map(doc) {
if(doc.receiver.lenth==0)
emit([doc.date, null, doc.author], doc._id);
else for(var idx in doc.receiver)
emit([doc.date, doc.receiver[idx], doc.author], doc._id);
}
當查詢CouchDB的HTTP接口我tryed請求像
HTTP GET xxx/messages?key=[{}, "USERIDGOESHERE02", {}]
或
HTTP POST xxx/messages
{
keys: [
[{}, "USERIDGOESHERE02", "USERIDGOESHERE01"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE03"],
[{}, "USERIDGOESHERE02", "USERIDGOESHERE04"],
]
}
但所有這些沒有產生我想製作的文件清單。你對這項任務有什麼建議嗎?或者是不可能用couchDB建立這樣的過濾結果? 非常感謝您提前!
感謝您的回覆,我不得不認識到,對於couchDB來說,新手首先應該瞭解的是,沒有任何通配符是@ user787145所說的。我學到的另一件事是,事實上,視圖可以從一個起始索引讀到給定的結束索引,而不會在創建視圖後從列表中過濾掉一些文檔。這導致了觀點本身必須包括過濾特徵的結論。無論如何,似乎你的第三種方法是最適合我的用例。 – sics