我很困惑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。这不是补丁行为!所以我是否正确无论如何我需要通过所有领域?
非常感谢这里的灯光。
答案 0 :(得分:2)
正如您所看到的那样,该功能已经计划好,但仅在2018年3月5日获得反馈,因此可能需要一段时间才能交付。
目前您可以阅读文档,更新文档,然后按照您的说明插入 - 部分原因文档大小是一个重要的设计选择,或者您也可以编写存储过程来执行此操作并使用此操作部分更新。