如何在arangodb中替换列表元素

kdfy810k  于 2022-12-09  发布在  Go
关注(0)|答案(2)|浏览(154)

我在arango收藏中有一个列表,如下所示

{
"id":"123"
"studentlist": [
    "a",
    "b",
    "c"
  ]
}

现在,基于一些过滤条件,我必须用替换集替换列表中的特定元素。在这个例子中,我想用[b1,b2]替换b,这样我的集合看起来就像下面这样

{
        "id":"123"
        "studentlist": [
            "a",
            "b1",
            "b2",
            "c"
          ]
        }

如何使用arango查询。

bbuxkriu

bbuxkriu1#

您可以将“studentlist”替换为整个列表。

UPDATE "<document_key>" WITH {
  "studentlist": [
    "a",
    "b1",
    "b2",
    "c"
  ]
} IN <collection_name>
sd2nnvve

sd2nnvve2#

您可以使用许多函数来处理数据,例如,使用数组修改REMOVE_VALUEAPPENDSORTED来处理原始数据的studentlist,并使用对象修改MERGE来返回所需的结果。

LET data = {
"id":"123",
"studentlist": [
    "a",
    "b",
    "c"
  ]
}
LET list = SORTED(APPEND(REMOVE_VALUE(data.studentlist, "b"), ["b1", "b2"]))
RETURN MERGE(data, {studentlist: list})

返回您所需的

[
  {
    "id": "123",
    "studentlist": [
      "a",
      "b1",
      "b2",
      "c"
    ]
  }
]

您可以在FOR查询中使用LET表达式,也可以使用子查询来组合数据,等等...然后使用@Ömer_Taban的答案来更新文档,例如:

FOR d IN data
   FILTER <YOUR_CONDITIONS>
   LET list...
   ... 
   UPDATE d WITH list IN data

相关问题