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

ArangoDB AQL三个及以上集合嵌套关联合并查询实现方法

FOR u IN users 
  FOR c IN cities 
    FOR r IN regions
      FILTER u.city == c._id AND c.region == r._id 
      RETURN {
        // 剔除user中多余的city关联ID字段,保留其余所有属性
        user: UNSET(u, "city"),
        // 先剔除city中原有的region关联ID字段,再合并嵌套的region完整对象
        city: MERGE(UNSET(c, "region"), { region: r })
      }

如果不需要剔除原关联ID字段,也可以直接简化为:

RETURN { user: u, city: MERGE(c, { region: r }) }

扩展到N层嵌套的通用逻辑

不管要关联多少层级,遵循统一的嵌套规则即可:

  • 从最外层的主集合(比如这里的users)开始,逐层向下关联子集合
  • 每一层关联到新的子对象后,将当前层对象中对应的关联ID字段,替换为子对象的完整内容即可

举个四层关联的例子,假设新增Countries集合,Regions文档中存在country字段关联Countries._id,写法如下:

FOR u IN users 
  FOR c IN cities 
    FOR r IN regions
      FOR cn IN countries
        FILTER u.city == c._id AND c.region == r._id AND r.country == cn._id
        RETURN {
          user: UNSET(u, "city"),
          city: MERGE(UNSET(c, "region"), { 
            region: MERGE(UNSET(r, "country"), { country: cn }) 
          })
        }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:09:01