azure - 为什么我的 Azure Cosmos DB SQL API 容器拒绝具有相同分区键值的多个项目?

标签 azure azure-cosmosdb azure-cosmosdb-sqlapi

在 Azure Cosmos DB (SQL API) 中,我创建了一个容器,其“分区键”设置为 /part_key,现在我尝试在数据资源管理器中创建和编辑数据。

我创建了一个如下所示的项目:

{
    "id": "test_id",
    "value": "val000",
    "magicNumber": 32,
    "part_key": "asdf"
}

我现在正在尝试创建一个如下所示的项目:

{
    "id": "frank",
    "value": "val001",
    "magicNumber": 33,
    "part_key": "asdf"
}

根据文档,我相信分区键中的每个项目都需要一个不同的id,对我来说这意味着多个项目实际上可以共享一个分区键,这很有意义。

但是,当我尝试保存第二项时出现错误:

{"code":409,"body":{"code":"Conflict","message":"Entity with the specified id already exists in the system...

我发现,如果我将 part_key 的值更改为其他值(例如 asdf2),那么我就可以保存这个新项目。

要么我对此功能的期望是错误的,要么我以某种方式做错了。这里出了什么问题?

最佳答案

您的理解是正确的,如果您尝试替换 id 等于现有文档 id 的新文档,则可能会发生这种情况。这是不允许的,因此操作失败。

在插入修改后的副本之前,您需要为其分配一个新的 ID。我测试了这个场景,看起来不错。可能会尝试创建一个新文档并检查

关于azure - 为什么我的 Azure Cosmos DB SQL API 容器拒绝具有相同分区键值的多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64516037/

相关文章:

reactjs - 处理连接到 Azure Cosmos DB (SQL API) 的 React 应用程序中的 "Access to fetch blocked by CORS policy"异常

node.js - 部署到云时无法将实体添加到 Node.js 中的 Azure 存储表中?

Azure Function 不返回 405 响应

node.js - 备份到 documentdb 中

azure - 如何使用 C# REST API 生成不记名 token 并使用不记名 token 进行身份验证?

azure - 处理 cosmos sql 查询中 ARRAY_CONTAINS 搜索中的特殊字符

使用 chef 创建的 linux azure vm 在尝试引导甚至给出 rsa 文件时询问 ssh 密码?

rest - 对 Wiki 页面执行 PUT 请求时主体内容为空

azure - Power BI - Azure Cosmos DB 中的桌面日期时间

c# - 有没有办法使用存储在同一容器中的公共(public)分区键对不同类型的文档进行事务查询/查找