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

Cosmos .NET SDK的ReadManyItemsStreamAsync方法是否存在批量大小限制?

Cosmos SDK for .NET ReadManyItemsStreamAsync 批量限制说明

核心结论

ReadManyItemsStreamAsync 并非无限制返回所有请求的文档,它受限于Cosmos DB底层ReadMany API的请求限制,无法一次处理超过200个文档ID(或请求Payload超过1MB)的请求,否则服务端会返回400错误。

具体限制细节

  • 单次调用最多可传入200个文档ID,这是Cosmos DB服务端对ReadMany API的硬性限制。
  • 即使ID数量不到200,如果所有ID的总字符长度导致请求Payload超过1MB,同样会触发请求失败。

处理大量ID的解决方案

因为该方法不提供迭代器或分页机制,若要读取3000、15000这类大规模ID集合,必须自行拆分ID列表,分批调用ReadManyItemsStreamAsync,并将每一批的响应流依次写入目标文件。

示例代码(简化版):

var targetFileStream = new FileStream("output.json", FileMode.Create);
var allDocumentIds = GetThousandsOfDocumentIds(); // 你的ID集合
var batchSize = 200;

for (int i = 0; i < allDocumentIds.Count; i += batchSize)
{
    var batchIds = allDocumentIds.Skip(i).Take(batchSize).ToList();
    var response = await container.ReadManyItemsStreamAsync(
        partitionKey: new PartitionKey("your-partition-key"),
        ids: batchIds);

    if (response.IsSuccessStatusCode)
    {
        await response.Content.CopyToAsync(targetFileStream);
        // 可选:如果需要分隔多个批次的JSON数据,可写入换行或分隔符
    }
}

targetFileStream.Close();

补充说明

微软官方文档未在ReadManyItemsStreamAsync的方法说明中直接提及该限制,但这是底层ReadMany API的通用规则,所有封装该API的SDK(包括.NET)都遵循此约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:03:19