N1QL 查询 select Couchbae 中的动态键

N1QL query to select a dynamic key in Couchbae

我有以下结构,其中数组的键是动态的,等于键“batch”的值。

[
  {
    "7163": [
      {
        "name": "license",
        "ext": "jpg",
      }
    ],
    "batch": "7163",
    "type": "ECS"
  },
  {
    "8012": [
      {
        "name": "jan-statement",
        "ext": "pdf",
      },
      {
        "name": "feb-statement",
        "ext": "pdf",
      }
    ],
    "batch": "8012",
    "type": "ECS"
  }
]

我正在寻找一个 N1QL 查询 select 包含具有名称和扩展名的数组的动态键。我要找的结果应该是:

[
      {
        "name": "license",
        "ext": "jpg",
      },
      {
        "name": "jan-statement",
        "ext": "pdf",
      },
      {
        "name": "feb-statement",
        "ext": "pdf",
      }
]

由于批处理字段中有动态字段名称,因此您可以使用以下方法使用动态引用(字典引用,点和数组括号之间没有字段名称)。 d.[d.batch] ===> d.batch 必须评估为字符串 ===> d.["7163"] ==> d.`7163` ==> returns 值字段 `7163`

SELECT du.*
FROM default AS d
UNNEST d.[d.batch] AS du
WHERE d.type = "ECS";

您还可以探索 OBJECT 函数(OBJECT_NAMES()、OBJECT_VALUES()、OBJECT_PAIRS())将动态对象转换为 ARRAY 并对其进行迭代。 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/objectfun.html