javascript - Couchdb 使用键连接两个文档

标签 javascript join mapreduce couchdb relational-algebra

我有两个文档,一个具有树结构,另一个与第一个文档有关。我试图通过 fk 和 pk 加入这两个文档。我无法获得实际结果,它显示所有空值。

第一个文档

{
   "name": "one",
   "root": {
            "level1" : {
                       "level2" : {
                                 "level3" : {
                                           "itemone": "Randomkey1",
                                           "itemtwo": "Randomkey2
                                          }
                                }
                     }
         },
   "type": "firstdoc"
}

第二个文档
{
    "name"  : "two",
    "mapBy" : "Randomkey1",
    "type"  : "senconddoc
}

我编写了一个 map 函数,它列出了给定级别 1 或 2 或 3 的所有键。现在我想使用 key 加入第一个文档和第二个文档。我尝试了两种方法(第一种:我得到所有(Root,Randomkey),(docName,Randomkey1)但它没有做任何加入。我正在寻找类似的结果
(根,文档名)

有人可以帮助解决这个问题

map
function(doc) {
   if (doc.type === 'firstdoc' || doc.type === 'seconddoc' ) {
      var rootObj = doc.Root;
      for (var level1 in rootObj) {

         var level2Obj = doc.Root[level1];

         for (var level2 in level2Obj) {

           var keys = new Array();
            var level3Obj = level2Obj[level2];

            for (var i in level3Obj) {

                var itemObj = level3Obj[i];

                for (var i in itemObj) {
                    keys.push(itemObj[i]);

                    emit(doc.name, [itemObj[i], 0]);

                     var firstDocName = doc.name;

                    //This is gives null values
                    if (doc.Type === 'senconddoc' && doc.mapBy === itemObj[i]) {

                         emit(firstDocName , doc);
                    }
                }
            }



        }


    }
}

//This just lists keys to me
if (doc.type === 'senconddoc') {

    emit([doc.mapBy, 1] , doc);
}
}

最佳答案

要模拟连接,您必须输出带有 _id 的文档。其中,_id 的值需要指向一个实际的_id的一个文件。然后你可以使用include_docs=true拉入相关文件。这里的多对多示例:http://danielwertheim.se/couchdb-many-to-many-relations/

如果这不适用,您可以通过首先返回自定义键来进行两步手动连接。然后对所有文档 View 进行第二次查询,并指定多个键。

关于javascript - Couchdb 使用键连接两个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28248307/

相关文章:

javascript - amCharts 4 - 第二个 Y 轴不显示值

MySQL - 即使计数为零,也将结果与列表匹配

mysql - 在复杂连接中获取不同的数据

hadoop - 如何杀死由配置单元启动的 mapred 作业?

javascript - 条形图中的提示未显示 html 特殊字符中包含的文本,例如 <cable>

javascript - 有没有办法将 HTML 列表(UL、LI)保存到文件中,然后检索并显示它?

javascript - 如何将 javascript 链接放在 cgridview 的值数组中?

PHP SQL JOIN 语句与相关列

apache - Apache Nutch爬虫如何排除静态文件夹之类; cgi-bin,图片,css是否从NutCrawer中排除?

hadoop - 映射器输出中的零件文件是否代表拆分?