【发布时间】:2021-12-11 01:22:40
【问题描述】:
我们决定在某些情况下从 Azure 表存储 (ATS) 迁移到 CosmosDB。我想弄清楚,如何在 CosmosDB SQL API 中模仿 ATS InsertOrMerge 操作。使用 UpsertItemAsync 实际上会替换项目(如果找到)。
为了说明问题,让我们假设 app1 在 CosmosDB 中创建了一个包含 3 个非空字段的项。 app2 想要更新项目,但有 2 个非空字段的项目(例如,其中一个是 id 以匹配上一条记录)。来自 ATS 的 InsertOrMerge 将产生 2 个新的非空字段,其余字段将来自 app1 项目(非空)字段。来自 Cosmos 的 UpsertItemAsync 将简单地替换该项目(丢失第三个字段)。
当然,这可以通过首先获取项目、将其与新对象合并并替换新项目来完成,但这意味着需要再调用一次。有没有办法在不首先检索项目的情况下做到这一点?
【问题讨论】:
标签: azure-cosmosdb upsert