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

ArangoDB遍历查询仅返回1级Edge,0级Edge未显示原因咨询

问题原因及解决方案

原因分析

你的查询仅返回hs_codes为950300的1级Edge,核心原因有两点:

  • 过滤条件限制了路径长度:你的FILTER语句同时检查p.edges[0].hs_codes == 820559和p.edges[1].hs_codes == 950300,这意味着只有包含两条边的长度为2的路径才能通过过滤。长度为1的路径不存在p.edges[1],会被直接排除。
  • e变量的含义:在ArangoDB的遍历语法FOR v, e, p IN 1..2 ...中,e代表当前路径的最后一条边。对于通过过滤的长度为2的路径,最后一条边就是p.edges[1](即hs_codes=950300的那条边),因此返回结果只会包含这条边。

解决方案

如果你需要同时获取两条符合条件的Edge,可以修改查询的返回部分:

  • 返回整个路径的边数组:将RETURN e改为RETURN p.edges,这样每个结果会是包含两条Edge的数组(分别对应hs_codes=820559和950300)。
  • 调整过滤条件(如果需要保留长度为1的路径):拆分过滤逻辑,允许长度为1的路径单独匹配hs_codes=820559,例如:
FOR v, e, p IN 1..2 INBOUND 'company_nodes_2018_2023/6066a658fee3c9fc8c1c84b7' 
GRAPH supply_chain_graph
OPTIONS { uniqueVertices: 'path', maxIterations: 100000}
FILTER 
  (LENGTH(p.edges) == 1 AND p.edges[0].hs_codes == 820559) OR 
  (LENGTH(p.edges) == 2 AND p.edges[0].hs_codes == 820559 AND p.edges[1].hs_codes == 950300)
AND p.edges[*].actual_arrival_date ALL >= '2018-01' AND p.edges[*].actual_arrival_date ALL <= '2023-02' 
LIMIT 500000
RETURN e

这样调整后,查询会返回符合条件的0级Edge(长度为1的路径)和1级Edge(长度为2的路径)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:35:14