如何在 Arangodb 中通过更新添加新密钥

How add new key with update in Arangodb

例如,我有以下文档:

{
    "name" : "sara",
    "family" : "schwimmer",
    "age" : 23,
    "Address": {
      "StateID": 12,
      "Phone": 0,
      "ZipCode": 0
    },
    "create_date": "2021-08-25 17:55:03"
  }

我想在地址中添加新的密钥,如下所示:

"Address": {
          "StateID": 12,
          "Phone": 0,
          "ZipCode": 0,
          "StateName" : "NW"
        }

所以我把我的更新写成如下:

FOR p IN Person
    FOR a IN Area FILTER p.Address.StateID == a.ID
        UPDATE {_key : p._key, p.Address.StateName : a.Name} IN Person

当我 运行 这个查询时我得到一个错误,所以我试图把 p.Address.StateName 变成 [p.Address.StateName] 或 "p.Address.StateName" ,它在之后成功执行执行但不向地址添加新的 StateName 键。如何编写查询以向地址添加新键?

FOR p IN Person
    FOR a IN Area FILTER p.Address.StateID == a.ID
        UPDATE {_key : p._key, Address: MERGE(p.Address, { StateName: Name} ) } IN Person

试试这个,使用 MERGE 将现有的 Address 键与您创建的只有 StateName 的新迷你对象合并。

其实也可以这样:

FOR p IN Person
    FOR a IN Area FILTER p.Address.StateID == a.ID
        UPDATE {_key : p._key, Address: { StateName: Name} } IN Person

https://www.arangodb.com/docs/stable/aql/operations-update.html 此页面显示 UPDATE 上的一些可用选项,这些选项处理如何删除密钥、合并对象等。