默认情况下neo4j是否在match子句中过滤循环关系

时间:2018-06-29 13:00:05

标签: neo4j cypher

如果节点A和B之间的关系为A-[:knows]-> B,则以下查询不返回

MATCH (A)-[:knows]-(B)-[:knows]-(A) return *;

带有显式“ wi​​th”的查询有效

MATCH (A)-[:knows]-(B) with B MATCH (B)-[:knows]-(A) return *;

为什么会这样?为什么第一个查询不返回任何内容? 即使我在匹配查询中使用关系方向,行为也不会改变。

1 个答案:

答案 0 :(得分:2)

在模式内,Cypher将仅遍历一种关系。

使用模式(A)-[r1:knows]-(B)-[r2:knows]-(A)r1 必须r2不同。 因此,如果AB之间只有一种关系,则此模式将不返回任何内容。

这样做是为了避免查询循环。