使用 MongoDB API 为 CosmosDB 创建唯一索引失败

问题描述 投票:0回答:2

我将 Azure CosmosDB 与 MongoDB API 结合使用。我正在尝试执行以下操作:

db.createCollection('test')
db.test.createIndex({key: 1}, {name: 'key_1', unique: true})

但是,这样做失败并出现以下错误:

The unique index cannot be modified. To change the unique index, remove the collection and re-create a new one.

文档Stack Overflow中阅读相关内容时,提到您只能为空集合创建唯一索引。

但是,当我尝试以下命令时,我的集合似乎是空的,因此这显然不是它不起作用的原因:

db.test.find()

我多次尝试重新创建该集合,但无济于事。

mongodb azure-cosmosdb azure-cosmosdb-mongoapi
2个回答
1
投票

就我而言,问题是由 CosmosDb 连续备份的限制引起的。

文档中所述:

不支持在创建容器后创建唯一索引的用于 SQL 或 MongoDB 帐户的 Azure Cosmos DB API 进行连续备份。仅支持在初始容器创建过程中创建唯一索引的容器。对于 MongoDB 帐户,您可以使用扩展命令创建唯一索引。

我必须使用自定义命令创建我的唯一索引。

db.runCommand({ 
  customAction: "CreateCollection", 
  collection: "CollectionName", 
  indexes: [
    {
      key: { "FieldName": 1 }, 
      name: "FieldName_1", 
      unique: true
    }
  ]
})

0
投票

根据提到的查询格式,它似乎像通配符索引样式,不幸的是,如果这是真的,那么通配符索引在创建唯一索引方面有限制。在 Azure Cosmos DB API for MongoDB 中无法使用通配符索引。因为创建通配符索引就像执行多个特定字段。

https://learn.microsoft.com/en-us/azure/cosmos-db/mongodb/mongodb-indexing

请参考上述链接。

© www.soinside.com 2019 - 2024. All rights reserved.