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

如何在Azure Cosmos DB中获取所有JSON属性的联合Schema?

获取Azure Cosmos DB产品JSON的完整联合Schema

以下是几种直接可行的方法,帮你提取所有文档(包括早期无新增字段的文档)的完整属性集合:

方法1:用Cosmos DB SQL查询直接提取所有顶层属性

如果只需要顶层属性,执行以下SQL查询,会返回所有文档中出现过的所有顶层属性名,自动去重:

SELECT DISTINCT VALUE key
FROM c
JOIN key IN OBJECT_KEYS(c)

执行后得到的结果就是所有顶层属性的列表,比如ProductId、Name、ModifiedDate等。

方法2:用内置的Schema Analyzer工具(最直观)

在Azure门户操作:

  • 进入你的Cosmos DB账户,打开数据资源管理器
  • 选择目标容器,切换到分析标签页,找到Schema Analyzer
  • 工具会自动扫描容器内的文档,生成包含所有属性(包括嵌套结构)的联合Schema,还能显示每个属性的出现频率、数据类型,直接就能看到完整的属性集合。

方法3:处理嵌套属性的递归查询

如果文档有嵌套对象(比如ProductDetails.Price这类层级属性),需要提取所有层级的属性名,可以先创建一个递归UDF:

  1. 在容器的用户定义函数中添加以下函数:
function getAllKeys(obj) {
    let keys = [];
    for (let key in obj) {
        keys.push(key);
        if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
            keys = keys.concat(getAllKeys(obj[key]));
        }
    }
    return keys;
}
  1. 执行以下SQL查询获取所有层级的属性:
SELECT DISTINCT VALUE key
FROM c
JOIN key IN udf.getAllKeys(c)

方法4:本地脚本批量处理

如果需要自动化处理,可以用Azure CLI结合本地工具:

  1. 用Azure CLI导出所有文档的属性键数组:
az cosmosdb sql query execute --account-name <你的Cosmos账户名> --database-name <数据库名> --container-name <容器名> --query "SELECT OBJECT_KEYS(c) AS keys FROM c" > keys.json
  1. 用jq工具合并并去重所有键(需要先安装jq):
jq -r '[.[].keys[]] | unique' keys.json

这样就能得到去重后的完整属性列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:33:19