我對couchdb的意見/ map-reduce有疑問。CouchDB視圖 - 多個篩選器
比方說,我們與酒店的文檔數據庫如下所示:
[{
_id: "1",
name: "Hotel A",
type: "hotel",
stars: 3,
flags: ["family-friendly","green-hotel","sport"],
hotelType: "premium",
food: ["breakfast","lunch"]
}, {
_id: "2",
name: "Hotel B",
type: "hotel",
stars: 5,
flags: ["family-friendly","pet-friendly"],
hotelType: "budget",
food: ["breakfast","lunch","dinner"]
}]
要找到所有酒店,3星,下面的視圖將適合:
function(doc) {
emit([doc.stars, doc.name]);
}
如果我使用startkey = [3],一切都很好。
但是怎麼可能用多個濾鏡製作視圖?
例如 - 所有酒店
- 用3星級及標誌「家庭友好」和「寵物友好」和 與hotelType「預算」?
- with hotelType「premium」and food「breakfast」or「lunch」?
- 等
任何想法?
編輯: 我現在已經決定使用良好的舊mysql。 CouchDB對我來說是一個很好的體驗,但是如果您需要的數據超過一個文檔的數據,那麼存在的問題太多:(
感謝您的反饋。 我知道我可以發射多次,而且我可以使用數組作爲鍵。 \t功能(DOC){ \t \t //按名稱 \t \t EMIT([1,DOC。名稱]); \t \t \t 通過\t // hotelType \t \t EMIT([2,1 doc.hotelType]); \t \t \t 通過\t標誌// \t \t爲(VAR i的doc.flags){ \t \t \t EMIT([3,doc.flags [I]]); \t \t} \t \t //由分和一個標記(一個或多個) \t \t爲(VAR i的doc.flags){ \t \t \t EMIT([4,DOC doc.flags [i]中。]); \t \t} \t} 但是,我如何搜索「星星和更多然後一個標誌」的例子?有沒有解決方法? – bernhardh
可讀格式:http://pastebin.com/n8rsp87r – bernhardh