在下面的查询中,第二个匹配模式
john-[r?:HAS_SEEN]->(movie)
是否在第一个匹配john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie)
的结果上运行。我想知道这是否类似于Unix管道概念,即第一个模式的结果是第二个模式的输入。start john=node(1)
match
john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie),
john-[r?:HAS_SEEN]->(movie)
where r is null
return movie;
a--b--c
和a--b, b--c
之间在语义上没有区别。它们的意思相同: "a与b相关,b与c相关"。唯一的句法差异是第一个将两个事实合并成一个句子。通常这是一个合理的方法,因为通常你在走一条非分支路径; 然而,如果你需要在两个方向上分叉,就不能在一行中完成,因此要使用两行。 - ean5533MATCH
的第二部分和你的WHERE
子句,并用这个替换它们:WHERE not(john-[:HAS_SEEN]->(movie))
。 - ean5533a--b--c--d--e, a--c
,意思相同。 - ean5533