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

ArangoDB多集合图遍历:如何获取含资产名称的完整查询结果

问题分析与解决方法

你的AQL查询只返回了翻新日期和类型,却没有资产名称,核心原因是遍历方向错误:

  • 边集合AssetRenoTimeNew是assetnew → timenew,也就是说timenew的资产数据在**入边(inbound)**方向;
  • 而你当前用outbound从timenew遍历,只能拿到Work节点(通过WorkTimeNew边),根本没触达assetnew节点,自然取不到v.AssetName。

以下是两种可行的修正方案:

方案一:分方向精准遍历(推荐,性能更优)

分别指定入边方向拿资产,出边方向拿翻新类型:

FOR c IN timenew
  FILTER c.startdate >= "2020-01-01"
  // 从timenew的入边获取对应的资产名称
  LET asset_name = FIRST(FOR v IN 1..1 inbound c GRAPH 'AssetWorkTime' RETURN v.AssetName)
  // 从timenew的出边获取对应的翻新类型
  LET work_name = FIRST(FOR v IN 1..1 outbound c GRAPH 'AssetWorkTime' RETURN v.WorkName)
  RETURN {
    AssetName: asset_name,
    Date: c.startdate,
    RenoJob: work_name
  }

方案二:全方向遍历后筛选

如果节点关系更复杂,可以用any遍历所有方向的1步节点,再从结果中筛选资产和类型:

FOR c IN timenew
  FILTER c.startdate >= "2020-01-01"
  // 遍历timenew所有方向的1步关联节点
  FOR v, e, p IN 1..1 any c GRAPH 'AssetWorkTime'
    COLLECT record_date = c.startdate INTO related_nodes = v
    // 从关联节点中提取资产名称
    LET asset_name = FIRST(FILTER node IN related_nodes HAS(node, 'AssetName') RETURN node.AssetName)
    // 从关联节点中提取翻新类型
    LET work_name = FIRST(FILTER node IN related_nodes HAS(node, 'WorkName') RETURN node.WorkName)
  RETURN {
    AssetName: asset_name,
    Date: record_date,
    RenoJob: work_name
  }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:35:48