我正在尝试在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独立运行不返回任何行。 d2独立运行返回有效结果
当我运行上面的代码(包含两个语句)时,结果是没有行。为什么d2受到d1的影响导致没有行?
我是cypher和neo4j的新手,请帮助。
以下是在官方neo4j控制台上设置的数据库: http://console.neo4j.org/r/617mrr
答案 0 :(得分:0)
您可以尝试这样
MATCH d2=(a:AGENT { name:'a' })-[r1:KNOWS]->(x)-[r2:KNOWS]->(e:AGENT { name:'e' })
optional match d1 = (a) -[r:KNOWS]-> (e)
RETURN d2
这是你需要的吗?
答案 1 :(得分:0)
d1
不返回任何数据,因为从a
到e
没有单跳路径。由于您没有任何匹配是可选的,因此您无法获得整个查询的数据。
这将导致d1找到匹配。
match (a:AGENT {name:'a'})
, (e:AGENT {name:'e'})
, d1 = (a) -[r1:KNOWS*..2]-> (e)
return d1
这是您的原始文件,只需稍加修改即可返回数据。
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