这里的MATCH语句没有指定方向,因此有两个可能的路径与模式匹配(请记住路径中节点的顺序很重要,并且可以区分路径),因此您有两个答案。
MATCH (n1:Car)-[r:DOCUMENT]->(n2:Car)
RETURN *
至于省略方向时为什么会返回两条路径的问题,请记住路径是顺序敏感的:具有相同元素但具有不同元素顺序的两条路径是不同的路径。
要帮助理解这一点,请考虑以下两个查询:
# Query 1
MATCH (n1:Car)-[r:DOCUMENT]-(n2:Car)
WHERE n1.value = 'Ford'
RETURN *
ââââââââââââââââââââ¤âââââââââââââââââââ¤ââââââââââââââââââ
â"n1" â"n2" â"r" â
ââââââââââââââââââââªâââââââââââââââââââªââââââââââââââââââ¡
â{"value":"Ford"} â{"value":"Subaru"}â{"value":"DOC-1"}â
ââââââââââââââââââââ´âââââââââââââââââââ´ââââââââââââââââââ
# Query 2
MATCH (n1:Car)-[r:DOCUMENT]-(n2:Car)
WHERE n1.value = 'Subaru'
RETURN *
ââââââââââââââââââââ¤âââââââââââââââââââ¤ââââââââââââââââââ
â"n1" â"n2" â"r" â
ââââââââââââââââââââªâââââââââââââââââââªââââââââââââââââââ¡
â{"value":"Subaru"}â{"value":"Ford"} â{"value":"DOC-1"}â
ââââââââââââââââââââ´âââââââââââââââââââ´ââââââââââââââââââ
在概念上(在没有索引的情况下,计划者也会使用),要得到上面的每个结果,您可以从描述中的完全匹配结果开始,然后筛选到唯一符合给定条件的结果。
如果原始查询只返回一行而不是两行,则上面的结果将与原始的无方向匹配查询不一致。
OP提供的附加信息
piece of documentation
要通过设计确认:
MATCH (a)-[r]-(b)
WHERE id(r)= 0
RETURN a,b
这将返回两个连接的节点,一次作为开始节点,一次作为结束节点。