Да, вы можете. Вам нужно знать только id
документа, который вы хотите заменить.Протестировано с клиентом .Net Microsoft.Azure.DocumentDB v2.2.1.
Это может быть достигнуто, когда передает предполагаемый новый документ как JObject
.Для этого вы можете использовать любой сериализатор Json.Также обратите внимание, что ваша модель не должна содержать внутренние поля документа, такие как _rid
, _ts
и т. Д.
Пример кода:
var client = new DocumentClient(url, key, policy);
var documentUri = UriFactory.CreateDocumentUri("myDB", "myCollection", "_replaceTest");
var newModel = JObject.Parse(@"{""id"": ""_replaceTest"", ""myData"": ""replaced!""}");
var response = await client.ReplaceDocumentAsync(documentUri, newModel);
var fromStorage = response.Resource;
Возвращенная модель - полная модель, содержащаядополнительные поля модели:
{
"id": "_replaceTest",
"_rid": "FOOBAR==",
"_self": "dbs/FOO==/colls/BAR=/docs/FOOBAR==/",
"_ts": 1550491238,
"_etag": "\"0000e379-0000-0000-0000-5c6a9e660000\"",
"myData": "replaced!"
}
Очевидно, что, как намекнул Дэвид Макогон, вы не можете полагаться на _etag
, проверяйте этот способ, если только вы не включите это свойство в модель, отправляемую в DocumentDB.