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

如何在ArangoDB的AQL中为map[string][]string字段追加元素(避免覆盖)

解决ArangoDB数组追加而非覆盖的问题

没问题,你的问题在于直接用UPDATE替换了整个text.june 2018字段,导致原有数组被覆盖。要实现追加元素到指定数组,你需要使用ArangoDB AQL的PUSH()函数,它专门用于向数组末尾添加元素。

正确的AQL查询语句

FOR doc IN annotation_info
FILTER doc.annotation_id == '1234'
UPDATE doc WITH {
  text: {
    "june 2018": PUSH(doc.text.`june 2018`, "test")
  }
} IN annotation_info

关键说明

  1. PUSH()函数的作用:第一个参数是目标数组(这里是doc.text.june 2018,因为键名包含空格,必须用反引号 ``包裹),第二个参数是要追加的元素"test"`。它会返回原数组加上新元素的新数组,而非直接修改原数据(符合AQL的函数式特性)。
  2. 处理数组不存在的情况:如果担心text.june 2018可能还未创建(比如首次追加),可以用COALESCE()设置默认空数组,避免报错:
    FOR doc IN annotation_info
    FILTER doc.annotation_id == '1234'
    UPDATE doc WITH {
      text: {
        "june 2018": PUSH(COALESCE(doc.text.`june 2018`, []), "test")
      }
    } IN annotation_info
    

执行这条语句后,你的文档就会变成期望的结果:

{"annotation_id": "1234", "text": {"june 2018": ["gain of revenue for this month", "test"]}, "user_id": ""}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:17:23