Я пытался обновить документ в CosmosDB с помощью C # MS Azure DocumentDB Core.
Приведенный ниже код работал нормально для сбора не Shard, и сбой для сбора Shard, который является производственным сценарием для хранения данных более 10 ГБ. Для коллекции Shard ключ shard был определен в поле «Demographics.Address.Country».
var builder = new FilterDefinitionBuilder<CustomerDO>();
var filter = builder.Eq("Id", customer.Id);
FieldDefinition<CustomerDO, Demographics> field1 = "Demographics";
var update = Builders<CustomerDO>.Update
.Set(field1, customer.Demographics);
Collection.UpdateOne(filter, update);
Приведенный выше код завершается неудачно для сбора осколка с ошибкой -
Не удалось обновить команду: запрос в команде должен быть нацелен на один осколок
ключ.
Я обнаружил проблему в коде обновления.
Операция обновления работала с добавлением Shard Key в выражении определения фильтра -
var filter = builder.Eq("Id", customer.Id) & builder.Eq("Demographics.Address.Country", "IND");