首页 > 解决方案 > 对 cosmosDB 中的唯一键约束强制执行不区分大小写的值?

问题描述

我们有一个 sql 容器。我们想对特定属性强制执行不区分大小写的唯一约束(例如,“名称”。如果文档的名称为“ALICE”,则该逻辑分区中的其他文档不应将“alice”作为名称)。一种解决方案可能是引入另一个属性 LowerCaseName 并在路径 /LowerCaseName 上强制执行本机支持的唯一键配置。每次更新 Name 时,我们确保 LowerCaseName 在同一个请求中始终更新为 Name 的小写版本。

我不确定这是否是解决此问题的最佳做法?谢谢。

public MyDocumentModel
{
    string Name {get; set;}

    string LowerCaseName {get; set;}
}

标签: azure-cosmosdbunique-constraintazure-cosmosdb-sqlapiunique-key

解决方案


从文档中here

在 Azure Cosmos DB 的 SQL (Core) API 中,项目存储为 JSON 值。 这些 JSON 值区分大小写。当您选择一个属性作为唯一键时,您可以为该属性插入区分大小写的值。 例如,如果您在 name 属性上定义了唯一键,则“Gaby”与“gaby”不同,您可以将两者都插入到容器中。

基于此,我相信您使用第二个属性来强制执行唯一密钥的方法是正确的。


推荐阅读