Art*_*nis 5 java azure-cosmosdb azure-cosmosdb-sqlapi
如果我尝试使用已存在的 id 和分区键插入文档,如果容器上没有设置唯一约束,它会按预期工作。
但是,当我将表中的任何值设置为唯一值时,upsert 不起作用并且我得到一个(409 冲突 - 一个 id 与文档的 id 字段匹配的文档已经存在)。在这种情况下,唯一约束不应该是问题,但它会导致此错误,它对 upsert 有一个奇怪的错误描述,因为 id 是否已经存在应该无关紧要。
我正在使用documentClient.upsertDocument(collectionLink, documentDefinition, null, true);.
Cosmos DB 的 Upsert / Replace 流程基于文档的唯一标识符(id 和 Partition Key 值),Unique Fields 用于添加额外的数据验证检查。
当进行 Upsert 操作时,服务将查找具有相同 id 和 Partition Key 值的现有文档,如果有则更新它,否则将创建它。
在您的情况下,您总是发送一个新的随机 ID,因此 Upsert 没有找到要更新的现有文档,而是每次都创建一个新文档。
请在启动 Upsert 之前定义您自己的 id,并将 upsert 调用中的 autogenerate id 属性设置为其默认 (true) 值:client.upsertDocument(collectionLink, documentDefinition)。
| 归档时间: |
|
| 查看次数: |
2257 次 |
| 最近记录: |