CosmosDB SQL API插入或合并



我们已经决定在某些情况下从Azure表存储(ATS)转移到CosmosDB。我试图弄清楚,如何在CosmosDB SQL API中模仿ATSInsertOrMerge操作。使用UpsertItemAsync实际替换项目(如果找到)。

为了说明这个问题,让我们假设app1在CosmosDB中创建了一个包含3个非空字段的项。App2想要更新项目,但是有一个包含2个非空字段的项目(例如,其中一个字段是id以匹配前一个记录)。来自ATS的InsertOrMerge将产生2个新的非空字段,其余字段将来自app1项(非空)字段。来自Cosmos的UpsertItemAsync将简单地替换项目(丢失第三个字段)。

当然,这可以通过首先获取项目,将其与新对象合并并替换新项目来完成,但这意味着还要进行一次调用。有没有一种方法可以做到这一点,而不需要首先检索项目?

在Cosmos DB中有一个Partial Document Update功能,但是目前还在私有预览中(在回答这个问题的时候)。

您可以了解更多关于此功能以及如何启用此功能的帐户,请参阅此链接:https://github.com/AzureCosmosDB/PatchPrivatePreviewFeedbackGroup。

我将此添加为指定方法和样本的另一个答案。

正如@Gaurav所提到的,这是您可以利用Cosmosdb的部分文档更新补丁API特性的地方。您要查找的是Replace方法

cosmosPatchOperations.replace("/taskNum", newTaskNum);

也可以使用条件补丁操作命令来替换属性。

相关内容

  • 没有找到相关文章

最新更新