多个匹配语句的问题,导致没有有效模式的行

Issue with multiple match statements, results no rows for valid patterns

我正在尝试使用代理在 Neo4j 中创建一个图表 "KNOWS" 关系。

Match (a:AGENT {name:'a'})
Match (e:AGENT {name:'e'})
Match d1 = (a) -[r1:KNOWS]-> (e)
Match d2 = (a) -[r1:KNOWS]-> (x) -[r2:KNOWS]-> (e)
Return d2

鉴于: d1 运行 独立 returns 没有行。 d2 运行 独立 returns 有效结果

当我 运行 上面的代码(同时包含两个语句)时,结果是没有行。为什么 d2 受到 d1 的影响导致没有行?

我是 cypher 和 neo4j 的新手,请帮忙。

下面是在官方neo4j控制台设置的数据库: http://console.neo4j.org/r/617mrr

你可以这样试试

MATCH d2=(a:AGENT { name:'a' })-[r1:KNOWS]->(x)-[r2:KNOWS]->(e:AGENT { name:'e' })
optional match d1 = (a) -[r:KNOWS]-> (e)
RETURN d2

这是您需要的吗?

d1 returns 没有数据,因为没有从 ae 的单跳路径。由于 none 的匹配项是可选的,因此您不会为整个查询返回任何数据。

这将使 d1 找到匹配项。

match (a:AGENT {name:'a'})
, (e:AGENT {name:'e'})
, d1 = (a) -[r1:KNOWS*..2]-> (e)
return d1

这是您的原始数据,对 return 数据稍作修改。

match (a:AGENT {name:'a'}), (e:AGENT {name:'e'})
, d2 = (a) -[r1:KNOWS]-> (x) -[r2:KNOWS]-> (e)
optional match d1 = (a) -[r1:KNOWS]-> (e)
return d2