【问题标题】:N1QL query to select a dynamic key in Couchbae在 Couchbae 中选择动态键的 N1QL 查询
【发布时间】:2020-06-30 22:45:48
【问题描述】:

我有以下结构,其中数组的键是动态的,并且与键“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 查询来选择包含具有名称和扩展名的数组的动态键。我正在寻找的结果应该是:

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

【问题讨论】:

    标签: couchbase n1ql


    【解决方案1】:

    由于您在批处理字段中有动态字段名称,您可以使用以下方式使用动态引用(字典引用,点和数组括号之间没有字段名称)。 d.[d.batch] ===> d.batch 必须计算为字符串 ===> d.["7163"] ==> d.`7163` ==> 返回字段 `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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多