0

特定の関係タイプに従い、そのパス上のすべてのノードと (その他の) 関係を返そうとしていますが、パスの一部ではないノードを通るパスをたどろうとはしていません。

以下は、デモ用に設定したライブ クエリです。

http://console.neo4j.org/?id=b6sxoh

この例では、B->E->C の関係を結果に含めたくありません。これは、それらの間に「depends_on」関係がないためです。

以下は私の多くの試みの1つです...(コンソールでも)。

START me=node:node_auto_index(name='A')
MATCH p=me-[d:depends_on*]->others 
WITH me,others 
MATCH p=me-[r*]-others 
RETURN DISTINCT relationships(p);

助けてください!

4

1 に答える 1

3

これを行う 1 つの方法は、パターン「p=me-[d:depends_on*]->others」の一致したパス上のノードの各ペアを繰り返し処理し、それらの間の他の関係を見つけることです。

START me=node:node_auto_index(name='A')
MATCH me-[:depends_on*0..]->(previous)-[:depends_on]->last
With previous, last
Match previous-[r]-last
Where type(r) <> 'depends_on'
Return r

パターン「me-[d:depends_on*]->others」に一致した各パスは、最後の関係として新しい関係で拡張されるため、一致したパスのすべての関係を反復処理することは、一致したパス。したがって、一致したパスごとに、最後の関係の開始ノードと終了ノードを「前」と「最後」としてキャプチャし、それらの間の関係「r」を見つけ、「r」を「Where」句に基づいてフィルタリングします。関係 r のタイプ。「depends_on」タイプではない関係 r のみを返します。

于 2013-11-08T14:42:45.670 に答える