ArangoDB执行UPDATE操作时如何为嵌套字段添加新键
错误原因
- AQL 的 UPDATE 语句不支持直接将嵌套路径作为顶层对象键更新嵌套字段,你之前尝试的几种写法最终都会在文档顶层生成名为
p.Address.StateName的无效键,不会修改 Address 下的嵌套属性。
正确实现语句
使用 MERGE() 函数合并原有 Address 对象和新增的 StateName 字段,既可以保留原有 Address 下的所有属性,又能新增目标键:
FOR p IN Person FOR a IN Area FILTER p.Address.StateID == a.ID UPDATE p WITH { Address: MERGE(p.Address, { StateName: a.Name }) } IN Person
补充优化
如果存在部分文档没有 Address 字段的场景,可以给 MERGE 传入默认空对象避免执行报错:
FOR p IN Person FOR a IN Area FILTER p.Address.StateID == a.ID UPDATE p WITH { Address: MERGE(p.Address || {}, { StateName: a.Name }) } IN Person
内容的提问来源于stack exchange,提问作者Ghasemi
相关产品推荐
相关产品推荐

