2017-01-09 22 views
1

私はいくつかの階層ツリーで構成されたデータベースを持っています。 ノードは番号で整理されています。同じ番号で始まるノードはリレーションシップによって相互接続されています。たとえば、(5) - [connect] - (50) - [connect] - (507)...など。最初の親ノードであるノード3からノード301を検索したい。私はcypherでこのクエリを行うのですか?neo4jの階層ツリーで検索

答えて

1

私は次のクエリを示唆している最初の親から始まる特定のノードを検索する場合:CONNECTを通じて関連するすべての子供のためのプロパティnumber = 1と検索でのノードの

MATCH (n {number:1})-[:CONNECT*0..]->(n1) return n, n1; 

このクエリー検索を関係。あなたが検索したいので、あなたはまた、深さ= Nを検索することができますどのような深さまで定義することができます*0..一部で

MATCH (n {number:1})-[:CONNECT*0..]->(n1 {number:101}) return n, n1; 

:あなたは、特定の子ノードを検索したい場合は、クエリをこのように変更する必要があります*0..nである。このドキュメントは、match/path節から始めるのに適しています。https://neo4j.com/docs/developer-manual/current/cypher/clauses/match/

+0

ありがとうございました!これは私の問題を解決します:) –

+0

どのように幅優先検索を行うのですか? –

+0

https://neo4j.com/blog/graph-search-algorithm-basics/をご覧ください。役に立つ情報があります。 Dijkstraのアルゴリズムの実装があるhttps://github.com/neo4j-contrib/neo4j-apoc-proceduresもご覧ください。 –