例如,我使用this site。
假设我们想知道Morpheus知道谁,但我们想要保持关系的方向。我希望a
成为“来自”,b
成为“来”
这会返回所有三个关系,但方向会丢失:
MATCH (a { name:"Morpheus" })-[]-(b:Crew) RETURN a, b
此外,Morpheus总是a
...... doh。
2是让Morpheus为a
或b
:
MATCH (a:Crew)-[]-(b:Crew) WHERE a.name="Morpheus" OR b.name="Morpheus"
RETURN a, b
返回的行数是我预期的两倍。显然,[]
关系的匹配非常自由。
经过一些洞察,我意识到我专注于错误的事情:
MATCH ({ name:"Morpheus" })-[r:KNOWS]-()
RETURN startnode(r) AS a, endnode(r) AS b
这就是诀窍。返回3行,关系方向得到尊重。
我对在该查询中根本没有命名节点感到有点奇怪。感觉就像我在乱砍。但话说回来,将节点连接在一起就是关系的用途。有什么其他方法可以做同样的事情?
答案 0 :(得分:2)
您应该能够将这两种方法结合起来:
MATCH (knower:Crew)-[:KNOWS]->(knowee:Crew)
WHERE knower.name="Morpheus" OR knowee.name="Morpheus"
RETURN knower, knowee