私のグラフは次のようになります
medium-[:firstChapter]->chapter1-[:nextChapter]->chapter2_to_N
:firstChapter を介して接続されたノードが 1 つだけあり、その後、:nextChapter を介して接続された複数のノードが続く場合があります。
関係 :firstChapter を介して媒体に接続されているか、 :nextChapter を介してあるチャプターから別のチャプターに接続されているすべてのノードを一致させようとしました
私が試したクエリは次のようになります
start n=node(543) match n-[:firstChapter|nextChapter*]->m return m;
node(543) はノード メディアです。驚くべきことに、ノードが n (=中間ノード) に接続されていなくても、このクエリはパス内のすべてのノードを返します。これは正しいようです。
start n=node(543) match n-[:firstChapter|nextChapter*]->m return m;
上記のクエリが n に接続されていないノードを返すのはなぜですか? 私が理解している限り、* 記号は通常、無制限の数のリレーションシップにあるノードを返しますよね?
:firstChapter または :nextChapter を介して開始ノードに接続されているパスのすべてのノードを (1 回だけ) 一致させる最良の方法は何ですか? この場合、すべての章
上記のクエリはその目的を果たしますが、出力が正しいとは思いません...
編集:明確にするためにダイアグラムを追加しました。ご覧のとおり、最初のチャプターには :firstChapter を介してのみアクセスできます。したがって、上記のクエリがすべてのチャプター ノードを返す理由はまだ不明です