现有文档
{
"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
标头,如果文档已经存在,则该标头会使其成为追加销售。
您可以修补文档,如果由于文档不存在而导致文档失败,则可以创建文档。这确实对控制流使用了异常,所以我对此并不太满意:\