我的图表中有多个关系。我想找到两个节点之间最短的关系。
我有两种类型的节点: 1人 2.公司
以及这些节点之间的许多关系,例如电话,电子邮件,地址等。
Here is the screenshot of my graph
我尝试做:
MATCH (r)-[q:*1..3]-(p) return type(q)
但是它给出了一条错误消息:
Invalid input '*': expected whitespace or a rel type name (line 1, column 14 (offset: 13))
我也尝试过MATCH (r)-[*]-(p) return *
,但这花了无限的时间。我还尝试通过索引来加快查询速度,但仍然没有运气。
请让我知道如何找到节点之间的最短路径。
答案 0 :(得分:4)
此查询中有2个错误:
MATCH (r)-[q:*1..3]-(p) return type(q)
q
用于可变长度路径模式,因此其值将是关系的列表。这是一个查询,实际上应该返回查询似乎试图返回的内容:
MATCH ()-[qs*..3]-()
UNWIND qs AS q
RETURN TYPE(q)
现在,如果要查找2个节点之间的最短路径(如您的问题主题所示),请参阅@DaveBennett的答案(假设他已修复我在其答案的评论中提到的问题)。
答案 1 :(得分:1)
您是否有机会在shortestPath
上查阅过Neo4j Cypher手册?
https://neo4j.com/docs/cypher-manual/current/clauses/match/#query-shortest-path
如果您想找到最短的路径...
MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))
RETURN path
如果您想在最短的路径上找到房地产
MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))
RETURN realtionships(path)