Join 在coach数据库中存储类似图形的结构,或者自己包含文档

Join 在coach数据库中存储类似图形的结构,或者自己包含文档,join,graph,couchdb,collation,relationship,Join,Graph,Couchdb,Collation,Relationship,我试图将网络布局存储在couchdb中,但我的解决方案提供了相当随机的图形。 我将节点与文档一起存储: {_id , nodeName, group} 以及以传统方式存储链接: {_id, source_id, target_id, value} 以下是关于在Coach DB I created view中处理联接和多重关系的多个教程: function(doc) { if(doc.type == 'connection') { if (doc.source_id)

我试图将网络布局存储在couchdb中,但我的解决方案提供了相当随机的图形。 我将节点与文档一起存储:

{_id ,
nodeName,
group}
以及以传统方式存储链接:

{_id, source_id, target_id, value}
以下是关于在Coach DB I created view中处理联接和多重关系的多个教程:

function(doc) {
  if(doc.type == 'connection') {

      if (doc.source_id) 
        emit("source", {'_id': doc.source_id});
      if(doc.target_id)
        emit("target", {'_id': doc.target_id});
    }

} 
它应该发出源id和目标id的序列,然后我将其传递给带有
include_docs=true
的列表函数,假设源id和目标id成对出现,将所有内容缝合回如下结构中:

{
  "nodes":[
    {"nodeName":"Name 1","group":"1"},
    {"nodeName":"Name 2","group":"1"},
  ],
  "links": [
    {"source":7,"target":0,"value":1},
    {"source":7,"target":5,"value":1}
  ]
}
虽然我的列表生成了正确的JSON,但视图映射返回源文档的行数,然后返回目标文档。 到目前为止,我还不知道如何使这个东西正常工作——我很高兴从列表中的文档
\u id
中获取附加值,但到目前为止,我还没有找到任何好的示例。 实现同一目标的其他方法是受欢迎的<代码>\u id值是迄今为止CouchDB的标准值

更新:在写一个问题时,我提出了不同的观点,对我眼前的问题进行了排序,但我仍然希望看到其他选择。 更新地图:

function(doc) {
  if(doc.type == 'connection') {

      if (doc.source_id) 
        emit([doc._id,0,"source"], {'_id': doc.source_id});
      if(doc.target_id)
        emit([doc._id,1,"target"], {'_id': doc.target_id});
    }

} 

更新后的地图功能更有意义。但是,您不需要在键中输入
0
1
,因为您已经有
“源”
“目标”