ObjectToArray(NoSQL 查询)
适用范围: 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
。