Javascript Couchdb使用密钥连接两个文档
我有两个文档,一个是树状结构,另一个是与第一个文档相关的。我想加入fk和pk的两个doc's。我无法得到实际结果,它显示所有空值 第一个医生Javascript Couchdb使用密钥连接两个文档,javascript,join,mapreduce,couchdb,relational-algebra,Javascript,Join,Mapreduce,Couchdb,Relational Algebra,我有两个文档,一个是树状结构,另一个是与第一个文档相关的。我想加入fk和pk的两个doc's。我无法得到实际结果,它显示所有空值 第一个医生 { "name": "one", "root": { "level1" : { "level2" : { "level3" : {
{
"name": "one",
"root": {
"level1" : {
"level2" : {
"level3" : {
"itemone": "Randomkey1",
"itemtwo": "Randomkey2
}
}
}
},
"type": "firstdoc"
}
第二医生
{
"name" : "two",
"mapBy" : "Randomkey1",
"type" : "senconddoc
}
我已经写了一个映射函数,它列出了给定级别1、2或3的所有键。现在我想用这个键连接第一个文档和第二个文档。我尝试了两种方法(第一种:我得到所有(根,随机键),(docName,随机键1),但它不做任何连接
(Root,docName)
有人能帮忙修理一下吗
地图
要模拟联接,您必须输出一个带有
\u id
的文档,\u id
的值需要指向文档的实际\u id
。然后您可以使用include\u docs=true
拉入相关文档。这里的多对多示例:
如果这不适用,您可以通过首先返回自定义键来进行两步手动联接。然后使用指定的多个键对“所有文档”视图进行第二次查询。时间已经很晚了,但对于这种树结构,文档应单独保存,例如
{
id="firstDoc",
type="rootLevel"
}
{
id="secondDoc",
type="firstLevel"
parent="firstDoc"
}
{
id="thirdDoc",
type="firstLevel",
parent="firstDoc"
}
现在,可以使用Map Reduce函数连接不同的级别,确保以正确的方式使用它,还可以使用日志记录,以便能够知道CouchDB调用的是哪个序列Map/Reduce函数
此外,map函数只应用于发出所需的文档假设如果要发出level3,则在emit的值部分中,应该有root.level1.level2.level3
有关联接的更多详细信息,请参考
Daniel,我正在尝试理解第二种方法的工作原理。你是说写两个视图,然后查询一个,然后使用它的响应在客户端中根据另一个定制查询吗?@AhmedFasih不,一个视图返回映射到所需文档id的键,然后针对all_docs视图发出第二个查询(系统视图)匹配那些ID。但是如果我可以在沙发上(不再使用沙发了)我会远离加入@Daniel那么你用什么来代替呢?
{
id="firstDoc",
type="rootLevel"
}
{
id="secondDoc",
type="firstLevel"
parent="firstDoc"
}
{
id="thirdDoc",
type="firstLevel",
parent="firstDoc"
}