【问题标题】:ArangoDB Remove element from nested arrayArangoDB 从嵌套数组中删除元素
【发布时间】:2021-12-11 09:14:45
【问题描述】:

我正在尝试从嵌套结构中删除一个数组元素。

例如,需要从文档中删除 ID 为 21 的元素。

FOR doc in [
{
    _key:1,
    Lvl1:[
        {ID:1, Lvl2:[{ID:10,Text:"A"},{ID:11,Text:"B"},{ID:12,Text:"C"}]},
        {ID:2, Lvl2:[{ID:20,Text:"D"},{ID:21,Text:"E"},{ID:22,Text:"F"}]},
    ]
}]
    
return {_key:doc._key ,Lvl1:doc.Lvl1[*].Lvl2[* FILTER CURRENT.ID!=21]}

fitler 基本上可以工作,但是文档结构没有保留,所以我无法对文档的 Lvl1 执行更新。

输出

[
  {
    "_key": 1,
    "Lvl1": [
      [
        {
          "ID": 10,
          "Text": "A"
        },
        {
          "ID": 11,
          "Text": "B"
        },
        {
          "ID": 12,
          "Text": "C"
        }
      ],
      [
        {
          "ID": 20,
          "Text": "D"
        },
        {
          "ID": 22,
          "Text": "F"
        }
      ]
    ]
  }

【问题讨论】:

    标签: arangodb


    【解决方案1】:

    这是一个解决方案:

    FOR doc in [
    {
        _key:1,
        Lvl1:[
            {ID:1, Lvl2:[{ID:10,Text:"A"},{ID:11,Text:"B"},{ID:12,Text:"C"}]},
            {ID:2, Lvl2:[{ID:20,Text:"D"},{ID:21,Text:"E"},{ID:22,Text:"F"}]},
        ]
    }]
        
    return {_key:doc._key ,Lvl1:(
        FOR item IN doc.Lvl1
        RETURN {ID: item.ID,Lvl2: item.Lvl2[* FILTER CURRENT.ID!=21]}
    )}
    

    使用嵌套的 FOR 就像 map 操作一样,可以让您更好地控制输出。

    【讨论】:

      猜你喜欢
      • 2022-07-19
      • 2019-01-25
      • 1970-01-01
      • 2013-11-22
      • 2019-09-13
      • 2021-01-20
      • 2018-08-29
      • 1970-01-01
      相关资源
      最近更新 更多