2016-08-10 14 views
0

Neo4JのCypherクエリを書く方法を理解しようとしています。Cypherで可変長関係のノードをスキップする

n-[FIRST_NODE]->n-[NEXT_NODE]->n-[NEXT_NODE]->..... 

FIRST_NODE関係には、ノードを取得するリストの深さを示すプロパティがあります。私は、nのプロパティに基づいてノードをスキップする可能性のあるノードのリストを取得し、ノードのx個の量を取得したい。ここで、xはリスト内を走査する深さである。これは理にかなっていますか?

私は以下のクエリを考え出しましたが、うまくいきません!

MATCH (x)-[firstIssue:FIRST_NODE]->(y:Type1) 
MATCH (z)-[:NEXT_NODE*1..{firstIssue.Count}]->(a:Type1) 
RETURN x,y,z,a 

助けが是正されました。

+0

最初に提案されたAPOCプロシージャー・ライブラリーcybersamを調べてください。それでもまだ動作していないのであれば、Cypherを放棄し、代わりにJavaでNeo4jのトラバーサルフレームワークを調べる必要があります。 – InverseFalcon

答えて

1

Cypherは可変長パスの動的境界をサポートしていません。

ただし、neo4j 3.xでは、APOC pluginをインストールしてapoc.path.expand手順を使用できます。例:

MATCH (x)-[firstIssue:FIRST_NODE]->(y:Type1) 
CALL apoc.path.expand(y, 'NEXT_NODE>', '+Type1', 1, firstIssue.Count) YIELD path 
RETURN x, firstIssue, path; 
+0

それを調べます。ありがとう –

関連する問題