ObjectToArray(NoSQL 查询)

适用范围: NoSQL

将 JSON 对象中的每个字段/值对转换为元素,然后将元素集作为 JSON 数组返回。 默认情况下,数组元素包含原始字段名称的新 k 字段和原始字段值的新 v 字段。 可以进一步自定义这些新字段名称。

语法

ObjectToArray(<object_expr> [, <string_expr_1>, <string_expr_2>])

参数

描述
object_expr 具有字段/值对中属性的对象表达式。
string_expr_1(可选) 具有字段名称的字符串表达式,该字段表示原始字段/值对的字段部分。
string_expr_2(可选) 具有字段名称的字符串表达式,该字段表示原始字段/值对的部分。

返回类型

包含两个字段(kv 或自定义命名字段)的元素数组。

示例

此示例演示如何使用默认 kv 标识符将静态对象转换为字段/值对数组。

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    })
[
  [
    {
      "k": "a",
      "v": "12345"
    },
    {
      "k": "b",
      "v": "67890"
    }
  ]
]

在此示例中,字段名称更新为使用 name 标识符。

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    }, "name")
[
  [
    {
      "name": "a",
      "v": "12345"
    },
    {
      "name": "b",
      "v": "67890"
    }
  ]
]

在此示例中,值名称更新为使用 value 标识符,字段名称使用 key 标识符。

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    }, "key", "value")
[
  [
    {
      "key": "a",
      "value": "12345"
    },
    {
      "key": "b",
      "value": "67890"
    }
  ]
]

最后一个示例使用现有容器中的项,其使用 JSON 对象中的字段存储数据。

[
  {
    "name": "Witalica helmet",
    "quantities": {
      "small": 15,
      "medium": 24,
      "large": 2,
      "xlarge": 0
    }
  }
]

在此示例中,函数用于将对象分解为每个字段/值对的数组项。

SELECT
    p.name,
    ObjectToArray(p.quantities, "size", "quantity") AS quantitiesBySize
FROM
    products p
WHERE
    p.category = "sport-helmets"
[
  {
    "name": "Witalica helmet",
    "quantitiesBySize": [
      {
        "size": "small",
        "quantity": 15
      },
      {
        "size": "medium",
        "quantity": 24
      },
      {
        "size": "large",
        "quantity": 2
      },
      {
        "size": "xlarge",
        "quantity": 0
      }
    ]
  }
]

备注

  • 如果输入值不是有效的对象,则结果为 undefined

另请参阅