在Azure Cosmos DB中进行Upsert之前的读取

时间:2018-03-29 08:42:04

标签: azure azure-cosmosdb upsert

我很困惑Azure Cosmos DB" UpsertDocumentAsync" C#API有效。 如果您第一次阅读该对象,则看起来该对象已更新:

var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(databaseId, collectionId, "docId"), new RequestOptions { PartitionKey = new PartitionKey("pk") });
var upsertOrder = response.Resource;
var upsertOrder = new Measurements { Id = "docId" , value = 3243};
upsertOrder.SetPropertyValue("value", 5678);
response = await client.UpsertDocumentAsync(collectionLink, upsertOrder);

如果我直接创建一个对象:

 var upsertOrder = new Measurements { Id = "docId" , value = 3243};
 response = await client.UpsertDocumentAsync(collectionLink, upsertOrder);

这会创建一个新对象!!在修补之前我真的很难阅读文档吗?

修改 我知道我也需要添加partitionKey。因此它不再创建新对象但它将所有未传递的字段设置为NULL。这不是补丁行为!所以我是否正确无论如何我需要通过所有领域?

非常感谢这里的灯光。

1 个答案:

答案 0 :(得分:2)

https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on-document

正如您所看到的那样,该功能已经计划好,但仅在2018年3月5日获得反馈,因此可能需要一段时间才能交付。

目前您可以阅读文档,更新文档,然后按照您的说明插入 - 部分原因文档大小是一个重要的设计选择,或者您也可以编写存储过程来执行此操作并使用此操作部分更新。