2017-06-29 35 views

回答

3

我试着使用ReplaceDocumentCollectionAsync,就像你是changing the indexing policy一样。

var collection = readResponse.Resource; 
collection.PartitionKey.Paths.Clear(); 
collection.PartitionKey.Paths.Add("/PartitionKey"); 

var replaceResponse = await documentClient.ReplaceDocumentCollectionAsync(collection); 

而且我得到了一个例外:

DocumentClientException:消息:{ “错误”: “文件收集分区键不能改变”]}

所以,不,创建集合后无法更改分区键。

+1

你是对的。改变它的唯一方法是创建一个新的并导入它。这就是为什么有些人选择不使用自然场作为分区键。相反,有一个字段(也许'partitionKey'或'_pk'),并填写任何你想写的东西。这会让你稍后改变主意,并用不同的东西填充它......虽然这是它自己的限制。您无法更改更新中的分区键值。你必须删除并重新创建它。这比将整个东西导入新的集合还是可能更好(增量)。 –

+0

感谢您的信息!我正在寻找具有专用分区键属性的路线,但我在路径字符串中的属性名称框中犯了一个错误。当我的意思是“/ PartitionKey”时,我错误地使用了“/ partitionKey”。幸运的是,我仍处于设计/测试阶段,所以在重新导入数据时有点痛苦,现在是时候捕捉这些愚蠢的错误并了解它们的影响。 – AndyJ

+0

是的,现在是时候了。 :-)祝你的项目好运。从开发人员的角度来看,CosmosDB是一个很好的平台。 –

相关问题