2016-06-06 2 views
0

Neo4j :</p> <pre><code>MATCH p=(a)-[*2]-() where id(a) = 0 RETURN * </code></pre> <p>에 대해 : 경로에서 하나의 개체를 반환하는 방법은 실행하고

CREATE 
(P1:Person), 
(P2:Person), 
(P3:Person), 
(P4:Person), 
(P5:Person), 
(P6:Person), 
(P7:Person) 

CREATE 
(A1:Address), 
(A2:Address), 
(A3:Address), 
(A4:Address) 

CREATE 
(P1)-[:Friend]->(P3), 
(P5)-[:Friend]->(P7) 

CREATE 
(P1)-[:House]->(A1), 
(P1)-[:House]->(A2), 
(P2)-[:House]->(A2), 
(P2)-[:House]->(A4), 
(P3)-[:House]->(A3), 
(P4)-[:House]->(A2), 
(P5)-[:House]->(A1), 
(P6)-[:House]->(A3) 

를하고는 예상 값을 반환

문제는 데이터베이스가있을 때입니다 하나의 값만 예 :

CREATE 
(P1:Person) 

이 경우 검색 경로가 비어 있습니다. 위의 쿼리를 일반화하여 깊이가 2보다 작은 구조체를 얻으려면 어떻게해야합니까?

답변

2

MATCH에 정의한 패턴이 있어야하므로 검색 경로가 비어 있습니다.

할 수 있습니다 : P

에 대한

B)를 a와 널 (null)을 반환

MATCH (a) 
OPTIONAL MATCH p=(a)-[*2]-() 
RETURN * 

가 관계 길이 0..x를 사용 관계 부분에 대한

가) 사용 OPTIONAL MATCH 깊이 :

MATCH p=(a)-[*0..2]-() RETURN * 

a)에서와 동일한 결과를 반환하는 differen),

http://graphaware.com/graphaware/2015/05/19/neo4j-cypher-variable-length-relationships-by-example.html

+0

덕분에 나 갈 : 경로의 길이가 2이어야 쿼리에서

불구하고 CES, 여기에 경로 관계의 깊이에 대해 길이가 0, 2

에 대한 설명 사이에있을 수 있습니다 – Randomize

관련 문제