我有三個類型的文檔:CouchDB三重加入?
- 問題
- 用戶 - 包含源字段
- 解答 - 包含相應的問題ID和用戶ID
每個問題是由多個回答用戶和每個用戶只回答每個問題一次。我想爲每個問題找到源「source1」的用戶回答了多少個答案。
我有三個類型的文檔:CouchDB三重加入?
每個問題是由多個回答用戶和每個用戶只回答每個問題一次。我想爲每個問題找到源「source1」的用戶回答了多少個答案。
我認爲你可以達到你想要的更接近的是(使用Linked documents)。
假設你有
{ "_id": "user1", "source": "source1" },
{ "_id": "user2", "source": "source2" },
{ "_id": "answer1", "question": "question1", "user": "user1" },
{ "_id": "answer2", "question": "question1", "user": "user2" }
,並定義了以下觀點
function(doc) {
if (doc.question) {
emit(doc.question, {_id: doc.user});
}
}
然後,如果你查詢與關鍵=「問題1」,並與include_docs =真 它會告訴你所有的觀點對所有用戶信息的question1的答案,你只需要選擇source =「source1」的那些。
例如,與前值,則回覆:
{"total_rows":2,"offset":0,"rows":[
{"id":"answer1","key":"question1","value":{"_id":"user1"},"doc":{"_id":"user1","_rev":"1-c99dc8987841c25c72081a84252793a0","source":"source1"}},
{"id":"answer2","key":"question1","value":{"_id":"user2"},"doc":{"_id":"user2","_rev":"1-0d44e9f4d3806fb932b1b4fcb1e1507b","source":"source2"}}
]}
但據我所知,你不能在視圖中的地圖功能做的是使用來自其他文檔的信息。
你無法在couchdb中實現此功能,並且需要使用第三方模塊。
例如一個:
sites.google.com/site/nosqldatajoiner/
或谷歌的NoSQL促使DataJoiner
我該怎麼辦include_docs =在蒲團界面真的嗎? – Bob 2014-09-05 13:05:26
你不能...你可以做的是用蒲團顯示你的視圖,然後按下「原始視圖」圖標(在右上角),並添加&include_docs = true到網址 – DaniCE 2014-09-05 14:14:53