2017-04-14 3 views
0

私はNeo4jで簡単なツリーグラフを持っています。各ノードはタイプObjectであり、idnameのプロパティを持ち、親子のAGGREGATIONリンクで他のノードとリンクできます(グラフはツリーであり、循環は許されません)。Neo4jでサブツリーを除外する方法は?

Iは、正常(以下の例ではID 127とノードによってルートとする)特定のサブツリーを返す単純なクエリを実行する:

MATCH network = (:Object { id: 127 })-[*]->() 
RETURN network 

をしかし、私はによってルートともサブツリーを除外クエリを、必要上記のクエリによって返されたサブツリーから、指定されたノード(たとえば、131)を返します。このクエリはどのように見えますか?

(私が試した:それは子供を持っていない場合

MATCH network = (:Object { id: 127 })-[*]->(x:Object) 
WHERE x.id <> 131 
RETURN network 

は、これが唯一の単一ノードを除外し

MATCH network = (:Object { id: 127 })-[*]->(x:Object)-[*]->() 
WHERE x.id <> 131 
RETURN network 

を、また動作しません。)

答えて

0

Iをリスト内包する方法を見つけた

MATCH network = (:Object { id: 127 })-[*]->(x:Object) 
WHERE NONE (n IN nodes(network) WHERE n.id = 131) 
RETURN network 

これはかなり高速ですが、おそらくもっと良い解決策が存在しますか?

関連する問題