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

ArangoDB嵌套对象集合键关联查询问题求助

解决ArangoDB嵌套Groups字段的关联查询问题

你的问题核心在于最后一步没有把生成的键值对数组合并成单一对象,而是直接返回了数组。咱们来修正这个查询:

修正后的查询语句

LET user = DOCUMENT('users/312121')
LET groups_keys = ATTRIBUTES(user.groups)
// 将循环生成的多个单键对象合并为一个完整的groups对象
LET groups_object = MERGE(
  FOR key IN groups_keys 
    RETURN { 
      [key]: (
        FOR group_key IN user.groups[key]
          // DOCUMENT支持直接传入集合名和键,比CONCAT更简洁
          LET group = DOCUMENT('groups', group_key)
          RETURN { group_id: group._key, name: group.name }
      )
    }
)
// 合并原user数据和新的groups对象
RETURN MERGE(user, { groups: groups_object })

关键修改点说明

  • 用MERGE()包裹外层的FOR循环:原来的查询生成的是包含多个{"1": [...], "2": [...]}这样的单键对象数组,MERGE()会把这些对象合并成一个大对象,正好符合你需要的嵌套结构。
  • 修正变量引用:你之前最后一行错误引用了未定义的groups变量,现在替换为合并后的groups_object。
  • 简化DOCUMENT调用:DOCUMENT('groups', group_key)是ArangoDB推荐的写法,和DOCUMENT(CONCAT('groups/', group_key))效果一致,但可读性更好。

验证输出

执行这个查询后,你会得到期望的格式:

{ 
  "_key": "312121",
  "name": "Ash", 
  "groups": {
    "1": [{ "group_id": "323223", "name": "Group 1" }], 
    "2": [{ "group_id": "313131", "name": "Group 2" }] 
  } 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:47:53