将数据追加到arangodb中的嵌套列表(子列表)

问题描述:

我很抱歉如果这是一个愚蠢的问题,但它使我疯狂。我对arango相当陌生,但通常我可以把它弄清楚,但这次不行。将数据追加到arangodb中的嵌套列表(子列表)

我想在下面的数据中将另一组项目插入名为'type'的列表中。我可以使用更新来修改子列表的内容,但似乎无法解决如何追加到列表中。

进行DOC IN MAG_TEST 过滤doc._key == “3704086” INSERT { “名称”: “玛丽”, “datestart”: “2017年3月16日”} INTO doc.type

所以这 [ { “_key”: “3704086”, “_id”: “MAG_TEST/3704086”, “_rev”: “3704109”, “名称”: “翻转”, “类型”:[ { “name”:“flop”, “sdate”:“2016年4月13日” }, { “名称”: “瓣”, “SDATE”: “2017年4月14日” } ] } ]

成为该 [ { “_key”: “3704086”, “_id”: “MAG_TEST/3704086”, “_rev”: “3704109”, “名称”: “翻转”, “类型”:[ { “名称”: “随角异色”, “SDATE” :“2016年4月13日” }, { “名称”: “瓣”, “SDATE”: “2017年4月14日” }, { “名称”: “扫视”, “SDATE”: “2018 4月18日”} ] } ]

+0

查看AQL文档中的[数组函数](https://docs.arangodb.com/3.0/AQL/Functions/Array.html),您将需要“更新”文档,并且你可以用现有的数组“合并”新文件。此外,您可能希望查看以[另一种格式]存储日期(http://*.com/questions/10286204/the-right-json-date-format),以便它们可以被提取并存储特定于时区的信息。看看你能否得到它。 –

下面是如何使用UPDATEAPPEND更新包含对象的阵列的属性的一个示例:

FOR doc IN MAG_TEST 
FILTER doc._key == "3704086" 
UPDATE doc WITH { type: APPEND(doc.type, {"Name":"Mary","datestart":"16 March 2017"})} IN MAG_TEST 

在这个例子中你:

  • FILTER找到您要更新的文件
  • UPDATE找到的文件
  • 使用WITH显示要更新
  • 识别type属性是更新
  • 使用APPEND哪个属性将新对象添加到现有值doc.type
  • 指定更新的文档将存储在的集合中,MAG_TEST

希望有所帮助。

Documentation on the UPDATE command

Documentation on Array functions

注:请不要使用MERGE正如我上面提到,MERGE用于两个文件的属性合并到一个单一的文件。要加入阵列,可以使用APPEND。通过其他数组函数可以帮助您解决在操作和从数组中获取数据时确保使用的用例。

+0

这个答案适合你吗?如果是这样,请记住将答案标记为已接受,或者如果您仍然遇到问题,请告知我。 –