我的CouchDB数据库有3种类型的数据:A,B,C。
例如:
{ _id:"a1", type:"A", name:"aaaaa", b:"b1" }
{ _id:"b1", type:"B", name:"bbbbb", c:"c1" }
{ _id:"c1", type:"C", name:"ccccc" }
我想在一个视图中查询所有的As,并检索其B的名称及其B的名称(例如,我想限制结果只获得As其中C的名字是" cc")。
我怎样才能实现这个目标?
(只获得A和B,答案是:
map: function (doc) {
if (doc.type == "A") {
emit([doc._id,0])
emit([doc._id,1], { _id: A.b })
}
}
但我不知道延伸到第二关系)
如果我们有一个' D'我也对答案感兴趣。上课,' E'具有更多嵌套关系的类等。
非常感谢!
答案 0 :(得分:1)
以通用的方式,在CouchDB中,它只能遍历一个深度的图形。如果您需要更多级别,使用专门的图形数据库可能是更好的方法。
有几种方法可以在CouchDB中实现您想要的功能,但您必须根据用例对文档进行建模。
使用CouchDB,最有必要考虑文档更新的频率和分布,而不是规范化数据。
这种思维方式与您使用SQL数据库的方式完全不同,但在我们在网络上的典型读取方案中,与独立模型文档等昂贵的读取查询相比,它是更好的权衡。实体。
当我为CouchDB文档建模时,我总是将其视为护照或商业信函。它是一个拥有有效,正确和完整信息的单一实体,但我并没有严格保证我仍然像护照一样高,我看起来和图片完全一样,我没有&#39改变了我的名字,或者我的地址不同于商业信函上所说的地址。
如果你提供更多关于你真正想要做些什么的例子的信息,我将很乐意进一步阐述!