我有2种文件,存储帐户数据的用户文件和存储有关用户公司的其他信息的文件
例如:
用户文档:
{ id : ABC
, name : "user1"
, active : false
, type : "user"
}
{ id : XYZ
, name : "user2"
, active : true
, type : "user"
}
公司:
{ id : ...
, name : "company1"
, owner : "ABC"
, type : "company"
}
{ id : ...
, name : "company2"
, owner : "XYZ"
, type : "company"
}
所有者链接到注册后创建文档的用户的文档ID,现在我只想查看文档所有者设置为活动的公司
最好的办法是什么?我可以使用reduce功能吗?任何例子将不胜感激
答案 0 :(得分:1)
您可以尝试通过使用非规范化数据库来存储不同类型的文档(在每个文档中具有类型属性以将一个文档与另一个文档区分开来)并使用view collation来实现此目的。
答案 1 :(得分:0)
正如您所看到的,我在每个文档中都有一个type属性。无论如何,我通过使用列表函数解决了这个问题。也许它不是最好的方法,但到目前为止它的工作对我的用例来说还不错。我肯定会看一下整理视图,但它有点令人困惑。
答案 2 :(得分:0)
我使用这个http://wiki.apache.org/couchdb/Formatting_with_Show_and_List来转换视图的结果并构建一个看起来像视图标准输出的json,代码看起来像这样:
在我看来,我只会发出活跃的用户
while(row = getRow()) {
if(row.value.type=="user")
active.push(row.value.id)
if(row.value.type=="companies")
companies.push(row)
}
for(var i = 0; i < companies.length; i++){
if(active.indexOf(companies[i].value.owner) != -1)
res.push(companies[i])
}
send('{\"total_rows\":'+companies.length+',\"rows\":[')
for(var i = 0; i < res.length;i++) {
send(toJSON(res[i]))
if(i+1 < res.length)
send(',')
}
send(']}')
正如我所说的那样或许不应该怎么做:)但也许有人可以给我一个例子,如何使用视图整理