2017-06-29 37 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是一個很好的平臺。 –

相關問題