在 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。我测试了这个场景,看起来不错。可能会尝试创建一个新文档并检查
我知道自提出这个问题以来已经有一段时间了。 快速解决方案是删除容器,重新创建它,然后继续添加文档。