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

Cosmos DB SDK v3中CollectionSizeQuota、DocumentQuota等效获取方法

Azure Cosmos DB v3 SDK 获取容器配额信息的实现方式

v3版本的SDK对响应模型做了精简,单条数据操作返回的ItemResponse<T>类型不再直接强类型暴露CollectionSizeQuota、DocumentQuota这类容器级别的配额属性,这两个值统一收敛到响应头中返回,可通过以下两种方式获取:

方法1:从操作响应的Headers属性直接读取

所有Cosmos DB操作返回的响应对象(包括ItemResponse<T>、ContainerResponse等)都自带Headers属性,直接从响应头中读取对应字段即可:

  • 集合存储配额对应响应头:x-ms-collection-size-quota
  • 文档数量配额对应响应头:x-ms-document-quota

等效于v2版本代码的v3实现如下:

using Microsoft.Azure.Cosmos;

public string FunctionA(ItemResponse<T> response)
{
    // 响应头返回值为字符串格式,需要数值类型时可自行转换为long
    string collectionSizeQuota = response.Headers.GetValueOrDefault("x-ms-collection-size-quota");
    string documentQuota = response.Headers.GetValueOrDefault("x-ms-document-quota");

    return string.Format(
        "collection size quota: {0}, document quota: {1}",
        collectionSizeQuota,
        documentQuota);
}

方法2:主动读取容器元数据获取配额

如果不在项操作的上下文里,需要单独查询配额,可以直接读取容器元数据,返回结果的响应头中同样携带这两个配额字段:

// 初始化Cosmos客户端
CosmosClient cosmosClient = new CosmosClient("你的Cosmos DB连接字符串");
Container targetContainer = cosmosClient.GetDatabase("目标数据库名").GetContainer("目标容器名");

// 读取容器元数据响应
ContainerResponse containerResponse = await targetContainer.ReadContainerAsync();
string collectionSizeQuota = containerResponse.Headers.GetValueOrDefault("x-ms-collection-size-quota");
string documentQuota = containerResponse.Headers.GetValueOrDefault("x-ms-document-quota");

注意事项

  • 配额值的默认单位为KB,使用时可根据业务需求做单位转换
  • 如果需要获取当前已使用的存储量、已存储的文档数量,可分别读取x-ms-collection-size-usage、x-ms-document-count-usage两个响应头,读取逻辑和配额字段完全一致
  • 容器配额属于创建时配置的静态值(除非手动调整容器的存储、吞吐量配置),建议首次读取后在业务内存中缓存,无需每次操作都重复解析,减少不必要的性能开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:15:18