2014-06-13 1 views
1

같은 인덱스를 공유하는 두 노드 사이에 길이 관계가 있음을 나타내는 쿼리를 찾으려고합니다. 기본적으로 특정 레이블에 대해 겹치는 부분이있는 경우 내 그래프는 특히 대형 아주 간단하고되지 않습니다 :
나는 모든 공유 노드 및 캠페인 사이의 관계를 찾으려면동일한 레이블을 공유하는 두 노드 간의 길이 관계

(m:`Campaign`), (n:`Politician`), (o:`Assistant`), (p:`Staff`), (q:`Aid`), (s:`Contributor`) 
(m)<-[:Campaigns_for]-(n) 
(o)<-[:works_for]-(m) 
(p)<-[:works_for]-(o) 
(q)<-[:volunteers_for]-(p) 
(m)<-[:contributes_to]-(s) 

. 지금까지 내가 가지고 :

MATCH (n:`Campaign`)-[r*]-(m:`Campaign`) 
RETURN n,count(r) as R,m 
ORDER BY R DESC 

하지만 내가 원하는 everyhing을 반환하지 않는 것, 나는 수, 각 관계의 라벨 사이의 노드의 이름에 추가합니다.

답변

2

"노드 이름"은 "노드의 이름 속성 반환"을 의미한다고 가정하면 (레이블 뒤에있는 경우 항상 "레이블 (n)"대신 사용할 수 있음) 다음과 같이하면되지만 당신이 조금 구문 분석해야 할 수도 있으므로 일부 집계가 여기에 무슨있다 : 나는 또한 당신이 말할 때 "당신이 원하는 모든 것을 반환하지"있으리라 믿고있어

MATCH p =(a:Campaign)-[r*]-(b:Campaign) 
RETURN a, length(relationships(p)) AS count, b, extract(x IN relationships(p)| type(x)), extract(x IN nodes(p)| x.name) 
ORDER BY count DESC 

을, 당신은 의미가 현재 반환 무슨에 추가 결과 세트, 당신이 나열한 다른 항목 만 원한다면.

그래프에주기가있는 것이 가능할 수도 있으므로 (특정 그래프에 대해 너무 많이 알지 못함), 시작과 끝 노드를 확인해야 할 수 있습니다.

+0

완벽하게, 당신의 가정은 모두 정확합니다. 나는 '추출'기능을 아직 접하지 않았으며, 그것이 내가 필요한 것입니다. 감사! – user2338089

관련 문제