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

ArangoDB中使用LET变量批量更新文档动态字段的查询语句可行性咨询

你的AQL更新语句可行吗?

嘿,这个查询语句其实不可行,原因在于AQL对对象字面量的解析逻辑:

你定义的变量A是一个包含status、updatedby、updatedate三个属性的对象,但你写的WITH { A }会被AQL解析成一个新对象——这个新对象只有一个键为"A"的字段,值就是你定义的变量A。执行这个语句后,你的Slot集合文档不会更新那三个目标字段,反而会新增一个名为A的嵌套字段,这显然不是你想要的效果。

正确的写法有两种:

  • 直接使用变量A:如果只需要更新A包含的三个字段,直接把变量放在WITH后面即可:
    LET A = { status: 'free', updatedby:'SYSTEM', updatedate:'28/05/2021 12:15:34' }
    UPDATE { _key: @key } WITH A IN Slot RETURN NEW
    
  • 结合扩展运算符(ArangoDB 3.5+支持):如果需要同时更新A的字段和其他额外字段,可以用扩展运算符展开A的属性:
    LET A = { status: 'free', updatedby:'SYSTEM', updatedate:'28/05/2021 12:15:34' }
    UPDATE { _key: @key } WITH { ...A, extraField: 'newValue' } IN Slot RETURN NEW
    

这样就能实现单次更新操作完成所有目标字段的更新啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:53:13