neo4j サイファー トラバーサルの問題があります。
セットアップ: ノード "a" から始まるクエリがあり、関係 "FOO" を持つすべてのパスが返されます。これらすべての「FOO」リレーションには、パラメーター「BAR」があります。パラメータ "BAR" には、"1" と "2" の 2 つ (またはそれ以上) の値を指定できます。ここで、1 つ以上の FOO.BAR="2" リレーションを含むすべてのパスを除外したいと考えています。
クエリ: START a=node(x) MATCH a-[rh:FOO*]->b RETURN rh; rh は考えられるすべてのパスを提供してくれますが、関係に関する基準を追加する方法がわかりません。
コンソールでシナリオを作成しました ( http://console.neo4j.org/?id=219eub )
作成 (a {name:"A"})、 (b {name:"B"}), (c {name:"C"}), (d {name:"D"}), b-[:FOO{BAR:'1'}]->a, d-[:FOO{BAR:'1'}]->a, c-[:FOO{BAR:'2'}]->b, d-[:FOO{BAR:'1'}]->c 開始 n=ノード(4) MATCH n-[rh:FOO*]-b 戻るrh;
これにより、クエリ結果が得られます
+---------------------------------------------------------------- --------------------------+ | | n.name | 右 | b.名前 | +---------------------------------------------------------------- --------------------------+ | | "D" | [:FOO[2] {BAR:"1"}] | "あ" | | | "D" | [:FOO[3] {BAR:"1"}] | "C" | | | "D" | [:FOO[3] {BAR:"1"},:FOO[1] {BAR:"2"}] | "B" | | | "D" | [:FOO[3] {BAR:"1"},:FOO[1] {BAR:"2"},:FOO[0] {BAR:"1"}] | "あ" | +---------------------------------------------------------------- --------------------------+
しかし、私は欲しいだけです
+---------------------------------------------------------------- --------------------------+ | | n.name | 右 | b.名前 | +---------------------------------------------------------------- --------------------------+ | | "D" | [:FOO[2] {BAR:"1"}] | "あ" | | | "D" | [:FOO[3] {BAR:"1"}] | "C" | +---------------------------------------------------------------- --------------------------+