Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Couchdb使用密钥连接两个文档_Javascript_Join_Mapreduce_Couchdb_Relational Algebra - Fatal编程技术网

Javascript Couchdb使用密钥连接两个文档

Javascript Couchdb使用密钥连接两个文档,javascript,join,mapreduce,couchdb,relational-algebra,Javascript,Join,Mapreduce,Couchdb,Relational Algebra,我有两个文档,一个是树状结构,另一个是与第一个文档相关的。我想加入fk和pk的两个doc's。我无法得到实际结果,它显示所有空值 第一个医生 { "name": "one", "root": { "level1" : { "level2" : { "level3" : {

我有两个文档,一个是树状结构,另一个是与第一个文档相关的。我想加入fk和pk的两个doc's。我无法得到实际结果,它显示所有空值

第一个医生

{
   "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"
}