【发布时间】:2021-03-14 23:35:02
【问题描述】:
我正在尝试为 CosmosDB 上的某些集合创建唯一索引。每个 MS 文档 https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-indexing :只有当集合为空(不包含文档)时才能创建唯一索引。
所以我清理了集合上的所有数据,但是我遇到了错误,消息是:
Error=13, Details='响应状态码不表示成功:Forbidden (403);子状态:0; ActivityId: xxx, Reason: (Message: {"serializedCollection":"{"Errors":["无法修改唯一索引。要更改唯一索引,请移除集合并重新创建一个新集合。"]}" ,"serializedOffer":"","serializedPartitionKeyRanges":[],"serializedPartitions":[],"collectionRemoteStorageSecurityIdentifier":"xxx","collectionChildResourceNameLimitInBytes":-1,"collectionChildResourceContentLengthLimitInKB":-1,"uniqueIndexNameEncodingMode":0, "uniqueIndexReIndexingState":0} ActivityId:xxx,请求 URI:/apps/xxx/xxx/partitions/xxx/replicas/xx,RequestStats: RequestStartTime:2020-12-02T23:25:04.2104773Z,RequestEndTime:2020-12-02T23:25:04.2204125Z,尝试的区域数:1 响应时间:2020-12-02T23:25:04.2204125Z,StoreResult:StorePhysicalAddress:rntbd://10.0.0.29:11000/apps/xxx/services/xx/partitions/xx/replicas/xx,LSN:41,GlobalCommittedLsn:41 , PartitionKeyRangeId: , IsValid: True, StatusCode: 403, SubStatusCode: 0, RequestCharge: 1.57, ItemLSN: -1, SessionToken: -1#41, UsingLocalLSN: False, TransportException: null, ResourceType: Collection, OperationType: Replace , SDK: Microsoft.Azure.Documents.Common/2.11.0, 请参见 CosmosDiagnostics, Windows/10.0.17763 cosmos-netstandard-sdk/3.3.2);
然后我尝试只添加字段 name ,然后它抛出了如下错误:
当集合包含文档时无法创建唯一索引
我们正在使用支持 Mongodb 3.6 的 CosomosDB。我正在使用命令: db.CollectName.createIndex({"fieldname" : 1}, {"unique" : true })
任何想法为什么我会收到错误?
谢谢,
【问题讨论】:
-
db.getCollectionInfos({name:"CollectName"})并粘贴输出 -
[ { "name" : "CollectionName", "type" : "collection", "options" : {} } ]
-
使用相同的命令在本地 mongodb 上创建唯一索引时没有错误。但它不适用于 CosmosDB。该集合的大小有限,只有 20GB,因此没有分片键。