gds.alpha.kShortestPaths.stream返回的路径中的Cypher Connect节点



我使用Neo4j 4.0.2运行gds.alpha.kShortestPaths.stream。该算法产生一条路径。该路径具有以NEXT关系连接的节点。我需要在Graph中找到连接路径中节点的实际关系。我提出了一个基于我知道路径有多长的笨拙查询:

...
YIELD path
with nodes(path) as nodes with nodes[0] as n0, nodes[1] as n1, nodes[2] as n2, nodes[3] as n3
match (n0)-[r1]-(n1)
match (n1)-[r2]-(n2)
match (n2)-[r3]-(n3)
return n0, n1, n2, n3, r1, r2, r3

显然,这个解决方案是不够的,我在这里发布它的唯一原因是为了说明我需要为任何长度的路径做什么。

谢谢

您可以通过以下程序实现这一点:

YIELD index, path
WITH index, nodes(path) as nodes
WITH index, nodes, size(nodes) as number_of_nodes
UNWIND range(0,number_of_nodes - 2) as start
WITH index, nodes[start] as start_node, nodes[start + 1] as end_node
MATCH (start_node)-[r:NEXT]->(end_node)
RETURN index, start_node,r, end_node

最新更新