네트워크 레이아웃을 Couch DB에 저장하려하지만 내 솔루션은 다소 무작위로 그래프를 제공합니다. 나는 문서와 노드를 저장 :그래프 모양의 구조를 Couch DB에 저장하거나 직접 include_docs 수행
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});
}
}
: 내가보기를 만든 소파 DB에서 여러 처리에 대한 자습서 조인과 여러 관계에 따라
{_id, source_id, target_id, value}
:
{_id ,
nodeName,
group}
및 저장 전통의 링크를
소스 및 대상 ID의 시퀀스를 내 보낸 다음이 시퀀스를 include_docs=true
과 함께 목록 함수에 전달하고 소스 및 t 쌍으로 arget 것은 이런 구조에서 다시 모든 것을 스티치 : 내 목록은 적절한 JSON을 생산
{
"nodes":[
{"nodeName":"Name 1","group":"1"},
{"nodeName":"Name 2","group":"1"},
],
"links": [
{"source":7,"target":0,"value":1},
{"source":7,"target":5,"value":1}
]
}
있지만,지도보기 소스 문서의 행의 수를 반환 한 후 문서를 대상으로. 지금까지이 작업을 올바르게 수행하는 방법에 대한 아이디어가 전혀 없습니다. 문서의 _id
에서 추가 값을 가져와서 기쁘지만 지금까지는 좋은 예제가 없습니다. 동일한 목표를 달성하기위한 대안 방법은 환영합니다. 지금까지 CouchDB의 값은 _id
입니다.
업데이트 : 질문을 쓰는 동안 나는 즉각적인 문제를 분류 한 다른 견해를 생각해 냈지만 다른 옵션을보고 싶습니다. 업데이트 된지도 :
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});
}
}