【问题标题】:Different unique and partition key in CosmosDBCosmosDB 中不同的唯一键和分区键
【发布时间】:2020-02-28 16:16:35
【问题描述】:

我们正在从 MongoDB 迁移到 CosmosDB。在 MongoDB 中,我们从未创建任何分区键,因为一切正常。但是在 CosmosDB 中,由于对 RU 的有效使用,我们需要创建分区键。

现在的问题是我们的集合中已经有一个复合唯一键,我们不想将其用作分区键(我也不确定在 cosmosDB 中是否可以使用复合分区键),因为我们不搜索通常使用这个唯一键,但我们使用一些其他参数。

是否有可能创建不同于唯一键的分区键?

我尝试这样做,但总是出错 -

cannot create unique index over { abc : 1.0, xyz : 1.0} with shard key pattern { partitionKey : 1.0 }

我还尝试创建分区键,它是唯一键的子集,但也会导致相同的错误。

是否有解决此问题的方法或有人知道更好的方法?

【问题讨论】:

    标签: mongodb azure-cosmosdb sharding unique-key


    【解决方案1】:

    尝试以这种方式为分片集合创建unique索引:

    db.collection.createIndex( { "abc" : 1, "xyz" : 1, "partitionKey" : 1 }, {unique:true})
    

    Source

    【讨论】:

    • 这也行不通(我之前也试过),但你的回答迫使我再次尝试,最后我明白了。在索引创建查询中,partitionKey 应该是第一个字段。因此,您提到的查询不起作用,但以下查询起作用(奇怪)- db.collection.createIndex( { "partitionKey" : 1 ,"abc" : 1, "xyz" : 1}, {unique:true})。感谢您的帮助:)
    • @N.. 发表您自己的回复,可以帮助其他用户
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2012-03-22
    相关资源
    最近更新 更多