2017-05-04 100 views
1

我很好奇neo4j如何解釋下面的查詢和實際返回的內容。Cypher查詢返回重疊?

MATCH path=(p1:Student)-[f:Friends]->(p2:Student)-[f2:Friends]->(p3:Student) 
RETURN p1.studentID, p2.StudentId, p3.StudentId 

我認爲這是返回所有節點鏈接到另一個,另一個和另一個鏈。但是,如果數據包含4個節點的鏈,該怎麼辦?這個查詢是否:1)什麼都不返回2)返回鏈的前3個節點或3)返回4鏈中的最後3個節點?

example drawing of 2) and 3)

由於提前,纔剛剛開始使用暗號,無法找到這事。

回答

2

答案是...雙方2),3):

試試這個:

CREATE CONSTRAINT ON (s:Student) ASSERT s.StudentID IS UNIQUE; 

CREATE (s1:Student {StudentID: "1"}),(s2:Student {StudentID: "2"}),(s3:Student {StudentID: "3"}),(s4:Student {StudentID: "4"}),(s1) -[:FRIENDS]-> (s2) -[:FRIENDS]-> (s3) -[:FRIENDS]-> (s4); 

MATCH (sm1:Student) -[:FRIENDS]-> (sm2) -[:FRIENDS]-> (sm3) 
RETURN sm1.StudentID, sm2.StudentID, sm3.StudentID; 

返回結果:

1,2,3

2,3 ,4

換句話說,匹配並不在乎圖中條件滿足的地方。

希望這會有所幫助, Tom