【发布时间】:2022-01-13 06:33:26
【问题描述】:
我读过这篇文章,但这里只写了每个分区的唯一键:https://docs.microsoft.com/en-us/azure/cosmos-db/unique-keys。
在上面的链接中给出,不能为容器中的现有集合创建唯一键。
有人可以建议为容器中的现有集合创建唯一索引的解决方案吗?
【问题讨论】:
标签: azure-cosmosdb azure-cosmosdb-sqlapi unique-key
我读过这篇文章,但这里只写了每个分区的唯一键:https://docs.microsoft.com/en-us/azure/cosmos-db/unique-keys。
在上面的链接中给出,不能为容器中的现有集合创建唯一键。
有人可以建议为容器中的现有集合创建唯一索引的解决方案吗?
【问题讨论】:
标签: azure-cosmosdb azure-cosmosdb-sqlapi unique-key
唯一键是对容器中的值进行逻辑分区的东西。在共享文档中已经提到,唯一键只能在创建 Azure Cosmos 容器时创建,因为唯一键策略定义了容器的结构(可以说是 Schema),防止之后出现任何重复条目。
现在,假设如果有人想在容器中创建新的唯一键,它可能会与现有的唯一键发生冲突,因此需要重新设计完整的结构。因此,不支持在现有容器中更改和添加新的唯一键。
实现要求的可能解决方法是:
要为现有容器设置唯一键,请创建一个新容器 具有唯一键约束。使用适当的数据迁移 将数据从现有容器移动到新容器的工具 容器。对于 SQL 容器,使用数据迁移工具移动 数据。对于 MongoDB 容器,使用 mongoimport.exe 或 mongorestore.exe 移动数据。
其他可能的方法是以编程方式实现逻辑,以在将值插入 Cosmos DB 之前检查任何列的元素的唯一性。您可以尝试pre-triggers 来实施检查。
【讨论】: