You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算可变长度边的属性总和?查询城市间路线总旅行时间

用Cypher计算可变长度路径的总旅行时间(Cavite Island到Bastille示例)

要找出从Cavite Island到Bastille的所有可行路线,并计算每条路线的总旅行时间,你可以用Cypher的可变长度路径匹配结合reduce函数实现属性求和,具体查询如下:

MATCH path = (start {name: "Cavite Island"})-[*]->(end {name: "Bastille"})
WITH path, reduce(total = 0, e IN relationships(path) | total + e.travelTime) AS totalTravelTime
RETURN 
  [node IN nodes(path) | node.name] AS 路线,
  totalTravelTime AS 总旅行时间
ORDER BY totalTravelTime ASC

关键部分说明:

  • MATCH path = (start {name: "Cavite Island"})-[*]->(end {name: "Bastille"}):匹配起点到终点的所有任意长度路径,[*]表示不限边数,若要限制路径长度范围,可写成[1..5](1到5条边)。
  • reduce(total = 0, e IN relationships(path) | total + e.travelTime):遍历路径中的每条边,累加travelTime属性值,得到这条路线的总耗时。
  • [node IN nodes(path) | node.name]:把路径上的所有城市名称提取成列表,清晰展示完整路线。
  • ORDER BY totalTravelTime ASC:按总耗时从小到大排序,方便快速找到最短路线。

注意事项:

  • 如果图中存在循环路线(比如同一城市被多次访问),查询可能返回大量重复或无限结果,可通过限制路径长度(如[1..10]),或者添加无重复节点的条件:WHERE ALL(n IN nodes(path) | size(filter(m IN nodes(path) WHERE m = n)) = 1)。
  • 如果你的节点有特定标签(比如:City),可以在匹配时加上标签,让查询更精准:(start:City {name: "Cavite Island"})。

内容的提问来源于stack exchange,提问作者Matheus Farias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:07:46