我们要求集合文档中特定字段的值必须是唯一的。这个集合是分区的,所以我不能在每次插入之前编写一个触发器或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执行此操作。但是有没有办法为现有集合添加此约束。此外,我无法从门户网站找到这样做的方法。我应该看看有什么特别的地方吗?
答案 0 :(得分:0)
Cosmos DB的DocumentDB API目前不提供属性的唯一索引。此功能在UserVoice上列为"已启动"。也许正在进行一些准备工作以支持独特的索引,但目前没有官方文档说明它们存在,或者如果它们确实存在,如何使用它们。
编辑最近推出了此功能,正如对.net SDK发行说明的更新所证明的那样。 尚未发布任何官方文档。文档现已发布here。
答案 1 :(得分:0)
似乎没有办法做交叉分区唯一键,只能在创建集合时定义唯一键。来自the documentation:
创建容器时必须定义唯一键,并且 唯一键的作用域是分区键。建立在早期 例如,如果您基于邮政编码进行分区,则可以使用 表中的记录在每个分区中重复。
无法更新现有容器以使用唯一键。