从user@couchdb.apache.org
转发假设我们在CouchDB中有两种文档。人与车:
人:
汽车:
所以有一对多的关系。一个人可以拥有很多车。
我可以构建地图功能,让每个人和他/她的车彼此相邻。在这种情况下,键是数组[person.id,0]和[car.person_id,1]。
我不能做的是将这种观点仅限于特定品牌的所有者,例如如果我需要法拉利车主的薪水。
答案 0 :(得分:2)
除非你真的需要将汽车连接到一个以上的人身上,否则我认为将人员所拥有的汽车与人员文件存储为子对象要容易得多。它会使查询更容易编写。
答案 1 :(得分:2)
您可以尝试这样的地图功能:
function(doc)
{
if (doc.type == 'car')
{
emit(doc.brand, {'_id' : doc.person_id});
}
}
根据CouchDB Wiki,从版本0.11开始:
如果发出具有的对象值
{'_id': XXX}
然后include_docs=true
将获取ID为XXX的文档 而不是文件 处理以发出键/值对。
这本身不会给你工资,但是你会得到包含工资的人员文件。
注意:要使用include_docs=true
,this post about a race condition可能相关。