我们要求集合文档中特定字段的值必须是唯一的。这个集合是分区的,所以我不能在每次插入之前编写一个触发器或SP来确保这一点(因为我想确保整个集合的唯一性,而不仅仅是分区)。
我遇到过以下链接,其中提到有一个uniqueKeyPolicy可以添加到集合中,但在官方文档中看不到任何示例或更多信息。
最好的方法是什么?
我发现的信息:https://github.com/Azure/azure-documentdb-dotnet/blob/master/changelog.md - 通过在DocumentCollection上使用UniqueKeyPolicy属性,添加为文档指定唯一索引的功能。
https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.documents.uniquekey?view=azure-dotnet
更新:经过一些尝试后,我能够在创建新集合(非分区)时使用.NET代码中的DocumentClient执行此操作。但是有没有办法为现有集合添加此约束。此外,我无法从门户网站找到这样做的方法。我应该看看有什么特别的地方吗?
看来没有办法做交叉分区唯一键,只能在集合创建过程中定义唯一键。来自the documentation:
创建容器时必须定义唯一键,并且唯一键的作用域是分区键。要构建前面的示例,如果基于邮政编码进行分区,则可以在每个分区中复制表中的记录。
无法更新现有容器以使用唯一键。