如何在Arangodb中使用更新添加新密钥

bttbmeg0  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(115)

我有以下文件为例:

{
    "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键到地址。我如何编写一个查询来添加新的键到地址?

mbzjlibv

mbzjlibv1#

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上的一些可用选项,用于处理如何删除键、合并对象等。

相关问题