2017-09-04 11 views
1

私は苦労しているNeo4j Cypherクエリを持っています。私が望むのは、指定された数(< 25)以下のプロパティとの関係に達するまで、すべてのノードに所定の関係を持たせることです。その関係の後にあるすべてのノードはスキップする必要があります。Neo4j Cypherは、指定されたプロパティとの関係に達するまでノードを取得します。

ここに私のグラフのサンプル:

Sample graph

とどのように私は結果がなりたい(シェア< 25との関係IS_OWNER後のすべてのノードはスキップされなければなりません)

The desired result

誰かが、サンプルグラフ(画像1)から希望の結果(画像2)を与えることができるCypherクエリを書く方法を示してくれることを願っています。関係25を持つ関係IS_OWNERの後のすべてのノードはスキップする必要があります。

答えて

1

ここでALL()関数を使用すると、パス内のすべてのリレーションシップにShare> = 25を指定する必要があります。そうでない場合は、さらに展開をプルーニングします。

MATCH (:Company{name:'C'})-[rels:IS_OWNER*0..]-(companies) 
WHERE all(rel in rels WHERE rel.Share >= 25) 
RETURN companies 

EDIT:

それはのNeo4jの新しいバージョンで廃止されました可変長の関係上の変数を使用してのように思えますが(I会社Cから始まると仮定すると、このような

何か、 「、)良い意思決定のように見えるしていませんが、ここで警告を回避しているこれを指定する別の方法がありますその上でダブルチェックLL:

MATCH p = (:Company{name:'C'})-[:IS_OWNER*0..]-(companies) 
WHERE all(rel in relationships(p) WHERE rel.Share >= 25) 
RETURN companies 
+0

これは動作するように縫い目が、私は警告を得たので、私は次のようになりますこのソリューションが新しいバージョンのNe4jでも動作するようなソリューションを用意しました。あなたはこの警告を解決する方法を知っていますか? 「この機能は推奨されておらず、将来のバージョンでは削除されます。可変長パターンのリストに 結合関係は推奨されている。(o[email protected]1c973114)」 これを引き起こす複数の関係の前でエイリアスを使用していることを縫い目にしています。なぜなら、relsを削除するか、0を削除すると〜[rels:IS_OWNER * 0 ..] - 消滅するからです。 – user1807286

+0

良い点、警告を回避する別のクエリ – InverseFalcon

関連する問題