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

Azure Functions中用container.items.bulk()批量Patch CosmosDB遇400错误求助

问题排查与解决

错误原因

你的批量Patch请求返回400错误,核心原因是**resourceBody字段的格式不符合要求**:

  • 使用bulk()执行Patch操作时,resourceBody需要传入Patch操作的数组,而非单个Patch对象。你当前直接传入了单个{op: "add", ...}对象,Cosmos DB无法识别该格式,因此返回400错误。

解决办法

将resourceBody的值改为包含单个Patch操作的数组,同时确认以下几点:

  1. 确保partitionKey的值与文档的分区键匹配(你的代码中分区键是FOO-123,和文档的code/id一致,这部分没问题)。
  2. 确认/payments/-路径正确,该语法用于向数组末尾添加元素,你的目标文档中payments确实是数组类型,这部分无需修改。

修正后的代码

const response = await container.items.bulk([
    {
        operationType: "Patch",
        id: "FOO-123",
        partitionKey: "FOO-123",
        resourceBody: [ // 这里改为数组格式
            {
                "op": "add",
                "path": "/payments/-",
                "value": {bar: "foo"}
            }
        ]
    }
])

验证结果

执行修正后的代码后,目标文档的payments数组会新增一个{bar: "foo"}的元素,最终文档结构如下:

{
    "id": "FOO-123",
    "code": "FOO-123",
    "payments": [
        {
            "foo": "bar"
        },
        {
            "bar": "foo"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:31:17