就像Azure COSMOS SDK中的Upsert操作一样,我们有PATCH+INSERT操作吗



现有文档

{
"property1" : "value1",
"property2" : "value2",
"property3" : "value3",
}

现在,";属性2";需要更改为";newValue2";。

使用UpsertItemAsync方法,

Container.UpsertItemAsync<T>(T, Nullable<PartitionKey>, ItemRequestOptions, CancellationToken)

文档更新为

{
"property2" : "newValue2" //"property1" & "property3" are removed.
}

我想要的是

{
"property1" : "value1",
"property2" : "newValue2",
"property3" : "value3",
}

PatchItemAsync适用于

Container.PatchItemAsync<T>(String, PartitionKey, IReadOnlyList<PatchOperation>, PatchItemRequestOptions, CancellationToken)

但如果文档不存在,则返回404 NOT FOUND。

我的问题是,有没有一种方法可以让我打补丁+插入?

Microsoft.Azure.Cosmos(3.23.0(

至少从文档来看,对于Patch端点,类似于Upsert的东西似乎是不可能的。Cosmos的客户似乎也不支持这样的事情。

如果将其与"创建文档"操作进行比较,它会提到一个x-ms-documentdb-is-upsert标头,如果文档已经存在,则该标头会使其成为追加销售。

您可以修补文档,如果由于文档不存在而导致文档失败,则可以创建文档。这确实对控制流使用了异常,所以我对此并不太满意:\

相关内容

最新更新