나는 기본적으로 사람들이 다른 사람들과 접촉 할 수있는 쿼리를 시도하는 그래프가 있습니다.친구 사이의 연결 사이퍼/Neo4j
개인으로 시작하여 연락 한 모든 사람과 연락처 간의 모든 연락처를 반환하는 사이퍼 쿼리를 실행하려고합니다.
이
내가이 톰을 반환 neo4j 웹 인터페이스에서start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN *
시작 한 쿼리입니다, 누구의 톰 연락하고 20 개 개의 노드와 32 개의 관계에서 톰의 접점 사이의 관계. I가 단지 (26)의 관계가있다라고 톰의 접촉부 사이를 제외
start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN count(*)
실행할 때 결과는 포맷 m 출력, n 개의 R (노드, 노드 관계) 그러나
이다.
결과를 d3.js 시각화로 가져 오므로 결과가 여전히 노드, 노드, 관계와 유사한 형식 (예 : 한 줄에 각 관련 쌍)으로 출력되는 것이 이상적입니다.
편집 : 더 자세히
나는 서로 연락 할 수있는 사용자와 그래프가있다. 사용자를 쿼리하고 그가 연락 한 모든 사용자와 그가 연락 한 사용자 간의 모든 연락을 원할 수 있기를 바랍니다. LinkedinLabs Inmaps
그러나 나는 상대적으로 노골적 d3 forced directed에서 사용할 수있는 형식으로 출력을 필요로 유사합니다. 출력은 예를 들어, 한 예를 들어
(Tom) - (Tom's friend) - (Tom's Friend's Friend)
이 D3 그래프 기대와 노드의 입력 오브젝트 때문에 이것은
(Tom) - (Tom's friend)
(Tom's Friend) - (Tom's Friend's Friend)
로 분할되는 것이 쉬울 것이며 링크 개체.
편집 uklas '대답에서
,이 작업을 얻었다.
start n = node:node_auto_index(name = "Tom")
MATCH (n)-[r]-(m)
RETURN n as person, m as personas_fr, r
UNION
start n = node:node_auto_index(name = "Tom")
MATCH (a)-[r1]-(n)-[r2]-(m), (a)-[r]-(m)
RETURN a as person, m as personas_fr, r
형식
데이터를 반환 세부 묘사. – Ger
나는 편집을했습니다 – ulkas
고마워요. 전에 유니온에 대해 생각한 적 없어요. 불행히도 m2는 모든 m의 친구로 구성되어있는 것 같습니다 (톰의 친구 친구 ...).하지만 다른 친구와 친구 인 친구들의 친구도 포함하고 싶습니다 (다른 친구가있는 친구). 따라서 그래프는 톰과 그의 친구들만으로 구성되어야하지만, 친구 사이의 관계도 포함해야합니다. – Ger