我试图使用C#MS Azure DocumentDB Core更新CosmosDB中的文档。
以下代码对于非Shard收集工作正常,而对于Shard收集却失败,Shard收集是用于10 GB以上数据存储的生产方案。对于碎片收集,在“ 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);
上面的代码无法进行分片收集,并显示错误-
命令更新失败:命令中的查询必须针对单个分片 键。
我在更新代码中发现问题。 更新操作与在过滤器定义表达式中添加分片键一起工作-
var filter = builder.Eq("Id", customer.Id) & builder.Eq("Demographics.Address.Country", "IND");