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

Cosmos DB删除文档后调用PatchItemStreamAsync为何会重建该文档?

问题原因解析

这是Azure Cosmos DB在indexingMode设为"none"时的特定行为:

  • 当索引模式为"none"时,容器仅保留主键的基础索引,不会维护其他任何索引,也无法通过索引快速校验指定ID的文档是否存在于对应分区中。
  • 为了避免低效的全分区扫描来确认文档存在性,PatchItemStreamAsync这类Patch操作会自动切换为Upsert逻辑:如果目标ID的文档不存在,就直接创建一个仅包含补丁中指定字段的新文档;如果文档存在,则执行修改操作。
  • 而当索引模式为默认的"consistent"或"lazy"时,系统可以通过主键索引快速定位文档,一旦检测到文档不存在就会返回404 Not Found错误,不会自动重建文档。

你手动删除文档后查询能确认删除,是因为查询时(哪怕是按ID查询),在indexingMode="none"下会执行全分区扫描找到结果,但Patch操作不会走这个低效的校验流程,直接执行Upsert。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:30:00