2017-05-04 7 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)

おかげで、事前に、ようやくCYPHERを使用して開始し、これについては何も見つけることができませんでした。答えは

答えて

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