我有三种类型的文件:
每个问题由多个用户回答,每个用户只回答一次问题。我想为每个问题找到源“source1”的用户回答了多少答案。
答案 0 :(得分:2)
我认为你越接近你想要的是以下(使用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});
}
}
然后,如果使用key =“question1”并使用include_docs = true查询该视图 它将显示问题1的所有答案以及所有用户信息,您只需选择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"}}
]}
但AFAIK,你在视图的map函数中不能做的就是使用来自其他文档的信息。
答案 1 :(得分:0)
你无法在couchdb中实现这一点,并且需要使用第三方模块。
例如那一个:
sites.google.com/site/nosqldatajoiner /
或google nosql datajoiner