【问题标题】:How to Filter and Sort array of object within array of object in ArangoDB如何在 ArangoDB 中的对象数组中过滤和排序对象数组
【发布时间】:2019-12-04 11:24:43
【问题描述】:

您好,我的有效载荷如下:

{
  "Id": "3",
  "List": {
    "Steps": [
      {
        "StepId": "1",
        "stepDesc1": [
          {
            "sortNo": "2",
            "description": "ABC"
          },
          {
            "sortNo": "1",
            "description": "XYZ"
          }
        ],
        "stepDesc2": [
          {
            "sortNo": "2",
            "description": "AAA"
          },
          {
            "sortNo": "1",
            "description": "BBB"
          }
        ]
      },
      {
        "StepId": "2",
        "stepDesc1": [
          {
            "sortNo": "2",
            "description": "CCC"
          },
          {
            "sortNo": "1",
            "description": "DDD"
          }
        ],
        "stepDesc2": [
          {
            "sortNo": "2",
            "description": "EEE"
          },
          {
            "sortNo": "1",
            "description": "FFF"
          }
        ]
      }
    ]
  }
}

我想按 Id 和 StepId 过滤并按 SortNo 排序并返回数据

我使用下面的查询来按 Id 和 StepId 过滤

FOR test IN test_data
FILTER test.Id=='3' 
FILTER '1' IN test.List.Steps[*].StepId
SORT test.List.Steps[*].stepDesc1.sortNo ASC
RETURN test.Steps

但第二个过滤条件不起作用并返回与 Id 3 对应的所有步骤。在我的情况下,它应该返回低于 o/p

{
        "StepId": "1",
        "stepDesc1": [
          {
            "sortNo": "2",
            "description": "ABC"
          },
          {
            "sortNo": "1",
            "description": "XYZ"
          }
        ],
        "stepDesc2": [
          {
            "sortNo": "2",
            "description": "AAA"
          },
          {
            "sortNo": "1",
            "description": "BBB"
          }
        ]
      }

谁能帮我解决一下

【问题讨论】:

    标签: arangodb aql


    【解决方案1】:

    我相信您正在寻找的是这样的东西。因为您应用的第二个 FILTER 是真的 1 确实在数组中,但 AQL 不排除 2。只是说1 必须在场。如果您循环嵌套数组 - 那么您可以使用==。希望这可以帮助。

    FOR test IN test_data
       FILTER test.Id == '3' 
        FOR step IN test.List.Steps
            FILTER step.StepId == '1' 
            SORT step[*].stepDesc1.sortNo ASC
    
    RETURN step
    

    【讨论】:

      猜你喜欢
      • 2020-11-28
      • 2021-04-23
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多