gpt4 book ai didi

java - Cosmos SQL 更新插入未按预期工作

转载 作者:行者123 更新时间:2023-11-30 01:53:29 24 4
gpt4 key购买 nike

如果我尝试更新插入具有已存在的 id 和分区键的文档,如果容器上没有设置唯一约束,它会按预期工作。

但是,当我将表中的任何值设置为“唯一”时,更新插入不起作用,并且出现(409 冲突 - id 与文档的 id 字段匹配的文档已存在)。在这种情况下,Unique 约束不应该成为问题,但它会导致此错误,该错误对更新插入有一个奇怪的错误描述,因为 id 是否已存在并不重要。

我正在使用 documentClient.upsertDocument(collectionLink, documentDefinition, null, true);

最佳答案

Cosmos DB 的更新插入/替换流程基于文档的唯一标识符(id 和分区键值),唯一字段用于添加额外的数据验证检查。

当进行Upsert操作时,服务将查找具有相同id和Partition Key值的现有文档,如果有,则更新它,否则将创建它。

就您而言,您总是发送一个新的随机 ID,因此 Upsert 不会找到要更新的现有文档,而是每次都会创建一个新文档。

请在启动 Upsert 之前定义您自己的 ID,并将 upsert 调用中的自动生成 id 属性设置为其默认 (true) 值:client.upsertDocument(collectionLink, documentDefinition)

关于java - Cosmos SQL 更新插入未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com