9

以下のクエリではjohn-[r?:HAS_SEEN]->(movie)、最初の一致の結果に対して 2 番目の一致パターンが実行されjohn-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie)ます。これが UNIX パイプの概念に似ているかどうかを理解しようとしています。つまり、1 番目のパターンの結果が 2 番目のパターンへの入力になります。

start john=node(1)
match
john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie),
john-[r?:HAS_SEEN]->(movie)
where r is null
return movie;
4

2 に答える 2

7

MATCH複数の節を UNIX パイプの概念と比較するつもりはないと思います。コンマで区切られた複数の一致を使用することは、単一の文で関係を記述するという 1 次元の制約から抜け出す方法にすぎません。たとえば、次は完全に有効です。

MATCH a--b, 
      b--c, 
      c--d, 
      d--e,
      a--c

最後に戻って参照acましたが、直前の節では使用されていませんでした。繰り返しますが、これは 1 次元の文章のみを使用して 2 次元の関係を描画する方法にすぎません。いくつかの 1 次元のピースで 2 次元の絵を描いています。

余談ですが、この句を UNIX パイプと比較しWITHたいと思います。WITH見つかった結果を、指定した次の句のセットにパイプします。

于 2013-05-09T18:55:53.793 に答える
2

はい、単純にこれら 2 つの一致を 1 つと考えてください。

match (movie)<-[r?:HAS_SEEN]-john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie)

また

match john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie)<-[r?:HAS_SEEN]-john
于 2013-05-09T17:37:51.807 に答える