2016-09-30 2 views
1

Graph I am trying to parseNeo4j 사이퍼 쿼리는 특정 관계

나는 "분석 단위"라는 파란색 노드로 시작하는 쿼리를 만드는 노력하고 함께 노드에 도달 할 때까지 모든 하위 노드를 얻을 수 있습니다. 쿼리는 다른 분석 단위에 직접 연결되어 관계를 "재정의"하는 노드로 실행되지 않는 한 모든 하위 노드를 가져옵니다. 어떤 도움을 주시면 감사하겠습니다!

+1

확대 할 수 있습니까? 에서와 같이, 연결된 그래프를 보면 올바른 쿼리를 기대하는 작업과 예상되는 결과를 살펴볼 수 있습니다. – InverseFalcon

+0

옆으로 : 방향성이 반대이지만 항상 같은 노드 사이에 존재하는 관계 유형이있는 것 같습니다. 이 중복성은 neo4j에서 필요하지 않습니다. 어느 방향 으로든 관계를 쉽게 탐색 할 수 있기 때문입니다. – cybersam

+0

@InverseFalcon 물론, "Bank of America"의 시작 노드에 대해 묻습니다. 파란색 노드 중 하나입니다 ... 연결된 모든 것을 빨간색으로 상자에 넣고 싶습니다. 아이디어는 그 아래에있는 모든 것이 다른 곳과의 관계를 명시 적으로 정의하는 노드로 실행되지 않으면 "Analytically A Part Of"관계를 "상속"합니다. 모든 노드에 명시 적 관계를 부여하는 것이 가장 좋습니다. – patrickb19

답변

1

이 쿼리는 효과가 있습니까?

각 노드의 경로를 무시하고 각 하위 노드 (첫 번째 노드 제외)에있는 경로를 무시하고 각 Blue 노드 (경로는 Red 개)와 "하위 노드" 수신 ANALYTICALLY_COMPOSED 관계 :

MATCH (a:Blue)-[:ANALYTICALLY_COMPOSED]->(b) 
MATCH p=(b)-[rels*]-(:Red) 
WITH a, NODES(p) AS subnodes 
WHERE NONE(n IN subnodes[1..] WHERE()-[:ANALYTICALLY_COMPOSED]->(n)) 
RETURN a, subnodes; 
+0

그래, 트릭을 했어 !! 정말 고마워! ... "a.name ="Bank of America "가 다른 경로에서 왔기 때문에 빨간색으로 표시되는 위치로 필터링해야했습니다. – patrickb19