我需要在两个节点之间找到短路,获取路径的所有关系(带属性)的列表。
如果我有这样的话:
MERGE (p1:Person{name: 'jim'})
MERGE (p2:Person{name: 'rob'})
MERGE (p3:Person{name: 'tom'})
MERGE (p4:Person{name: 'bob'})
MERGE (p1)-[:FRIEND{age: '20'}]->(p2)
MERGE (p2)-[:NO_FRIEND{age: '35'}]->(p3)
MERGE (p3)-[:FRIEND{age: '20'}]->(p4)
MERGE (p2)-[:FOO{age: '40'}]->(p4)
假设我需要从p1
转到p4
,结果列表应该是一个列表: FRIEND {age:'20'}和FOO {age:'40' }
如果我需要从p1
转到p3
,结果应为 FRIEND {age:'20'}和NO_FRIEND {age:'35'} < / p>
所以我有两个要求,短路,以及带有关系的列表。我该怎么办?
答案 0 :(得分:1)
听起来你只需要使用shortestPath
函数并返回结果路径(它将为您提供路径上的节点和关系及其属性)。例如,要获得从p1
到p4
节点的最短路径:
MATCH path=shortestPath((p1:Person {name: 'jim'})-[*]-(p4:Person {name: 'bob'}))
RETURN path;
如果要查找路径长度相同的所有路径,可以使用allShortestPaths
函数。