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

如何使用Cosmos DB Partial Document Update更新数组子对象属性

Cosmos DB 部分文档更新实现方案

场景1:已知Items数组中Id=2的元素固定位于索引1位置(数组从0开始计数)

你可以直接指定数组索引路径执行替换操作,通用REST API请求格式如下:

  • 请求方法:PATCH
  • 请求头必须指定:Content-Type: application/json-patch+json
  • 请求Body内容:
[
  {
    "op": "replace",
    "path": "/Items/1/ProductCode",
    "value": "A-111"
  }
]

C# SDK 示例代码(要求Microsoft.Azure.Cosmos SDK v3.23.0及以上版本):

var container = cosmosClient.GetContainer("你的数据库名", "你的容器名");
var patchOperations = new List<PatchOperation>
{
    PatchOperation.Replace("/Items/1/ProductCode", "A-111")
};

// 替换为当前文档对应的分区键值
var response = await container.PatchItemAsync<object>(
    id: "SalesOrder2",
    partitionKey: new PartitionKey("Account2"),
    patchOperations: patchOperations);

场景2:数组元素顺序不固定,无法确定Id=2的索引位置

可以使用Cosmos DB Patch内置的数组条件筛选语法,直接匹配数组中Id=2的元素执行更新,不需要提前查询文档获取索引:
REST API请求Body调整为:

[
  {
    "op": "replace",
    "path": "/Items/?Id=2/ProductCode",
    "value": "A-111"
  }
]

对应C# SDK代码仅需要修改PatchOperation的路径参数即可:

var patchOperations = new List<PatchOperation>
{
    PatchOperation.Replace("/Items/?Id=2/ProductCode", "A-111")
};

注意事项

  • 执行Patch操作必须传入目标文档对应的正确分区键值,否则会操作失败
  • 数组条件筛选语法属于Cosmos DB Patch正式支持的特性,目前已在所有公共区域全量开放
  • 其他语言SDK的实现逻辑一致,仅需要按照对应语言的语法构造PatchOperation,路径规则和上述示例完全相同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:03