Обновите коллекцию CosmosDB Shard с помощью C # - PullRequest
0 голосов
/ 10 мая 2019

Я пытался обновить документ в 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");
...