You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Cosmos DB SQL API中类似Object.keys()/values()的查询方法

Cosmos SQL API 中查询字典结构的键与值

由于变更检测存在数组排序问题,且数组内Schema不一致,你选择将对象数组结构化为以对象ID为键的字典(JSON对象),比如放弃如下数组结构:

{id: 'abc', items: [{id: 'xyz', text:'foo'},{id: 'wxy', name:'bar'}]}

改用字典结构:

{id: 'abc', items: {'xyz': {text:'foo'},'wxy': {name:'bar'}}}

针对这种结构,Cosmos SQL API提供了和JavaScript中Object.keys()、Object.values()对应的函数,以下是具体用法:

获取字典的所有键

使用OBJECT_KEYS()函数,传入目标字典字段即可提取所有键的数组:

SELECT c.id, OBJECT_KEYS(c.items) AS itemKeys
FROM c
WHERE c.id = 'abc'

查询结果中,itemKeys字段会返回["xyz", "wxy"]。

获取字典的所有值

使用OBJECT_VALUES()函数,可提取字典内所有值组成的数组:

SELECT c.id, OBJECT_VALUES(c.items) AS itemValues
FROM c
WHERE c.id = 'abc'

查询结果中,itemValues字段会返回[{"text":"foo"}, {"name":"bar"}]。

同时获取键与对应的值

如果需要将键和对应的值配对返回,可以结合ARRAY()与数组推导式实现:

SELECT c.id, 
ARRAY(
    SELECT {'key': k, 'value': c.items[k]} 
    FROM k IN OBJECT_KEYS(c.items)
) AS itemKeyValuePairs
FROM c
WHERE c.id = 'abc'

查询结果中,itemKeyValuePairs字段会返回:

[
    {"key": "xyz", "value": {"text":"foo"}},
    {"key": "wxy", "value": {"name":"bar"}}
]

这些函数不受字典内键名不一致的影响,完全适配你场景中Schema不统一的字典结构。

内容的提问来源于stack exchange,提问作者frigon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:36:27