azure - 为什么我的 Azure Cosmos DB SQL API 容器拒绝具有相同分区键值的多个项目?
问题描述
在 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"
}
根据文档,我认为分区键中的每个项目都需要一个 distinct id
,这对我来说意味着多个项目实际上可以共享一个分区键,这很有意义。
但是,当我尝试保存第二项时出现错误:
{"code":409,"body":{"code":"Conflict","message":"Entity with the specified id already exists in the system...
我看到如果我将 的值更改为part_key
其他值(例如asdf2
),那么我可以保存这个新项目。
要么我对这个功能的期望是错误的,要么我做错了。这里有什么问题?
解决方案
您的理解是正确的,如果您尝试使用 id 等于现有文档的 id 的新文档来代替,则可能会发生这种情况。这是不允许的,因此操作失败。
在插入修改后的副本之前,您需要为其分配一个新的 id。我测试了这个场景,它看起来很好。可能会尝试创建一个新文档并检查
推荐阅读
- php - PHP Curl POST 请求到 iFrame
- vue.js - 有什么方法可以将范围插槽从模板缩短到带有道具的组件?
- javascript - 如何使列表的一个元素在页面加载时移到顶部?
- ssl - 我如何找出谷歌安全面板所指的资源?
- fortran - 你在哪里使用 Fortran 块?
- c# - ASP.NET Core 中的 System.Web.Compilation.BuildManager
- dictionary - Julia中的字典元素操作
- python - 单击 dask 仪表板中的链接不起作用(“无法连接”)
- javascript - React - API 调用返回正确的结果但不传递
- javascript - 如何防止列总计数显示在 component.html 上?