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

如何通过ActiveGraph获取Neo4j最短路径查询的length值?

解决思路

方法1:修改Cypher直接返回长度

直接在查询语句中显式返回路径长度,避免后续解析路径对象的麻烦:

MATCH (start:`Neo4j::Record` {record_id: 1547}), (end:`Neo4j::Record` {record_id: 1850})
MATCH p=shortestPath((start)-[:`NEO4J::RECORD_ASSOCIATION`*]->(end))
RETURN p, length(p) AS path_length

执行查询后,结果中会直接包含path_length字段,可直接读取:

result = ActiveGraph::Base.query(modified_query).to_a
result.each do |record|
  puts "路径长度: #{record[:path_length]}"
end

方法2:从返回的路径对象中提取长度

如果不想修改Cypher,可从返回的路径对象中调用length方法获取长度。注意需要先将InternalResult转换为可遍历的集合,再提取路径对象:

result = ActiveGraph::Base.query(original_query).to_a
result.each do |record|
  path = record[:p]
  path_length = path.length
  puts "路径长度: #{path_length}"
end

Neo4j的路径对象本身内置了length属性,只是需要先从查询结果记录中取出路径对象才能访问。

注意事项

  • 若使用较旧版本的ActiveGraph,可能需要用size替代length,可根据实际版本调整方法名。
  • 调用to_a是将InternalResult转换为数组,方便遍历处理每条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:31:08