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