适用范围: NoSQL
将 JSON 对象中的每个字段/值对转换为元素,然后将元素集作为 JSON 数组返回。 默认情况下,数组元素包含原始字段名称的新 k 字段和原始字段值的新 v 字段。 可以进一步自定义这些新字段名称。
语法
ObjectToArray(<object_expr> [, <string_expr_1>, <string_expr_2>])
参数
| 描述 | |
|---|---|
object_expr | 
具有字段/值对中属性的对象表达式。 | 
string_expr_1(可选) | 
具有字段名称的字符串表达式,该字段表示原始字段/值对的字段部分。 | 
string_expr_2(可选) | 
具有字段名称的字符串表达式,该字段表示原始字段/值对的值部分。 | 
返回类型
包含两个字段(k 和 v 或自定义命名字段)的元素数组。
示例
此示例演示如何使用默认 k 和 v 标识符将静态对象转换为字段/值对数组。
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。