定義 Azure Cosmos DB 容器的唯一索引鍵

適用於:NoSQL

本文提供不同方式來定義建立 Azure Cosmos DB 容器時的唯一索引鍵。 目前可執行這項作業的方式是使用 Azure 入口網站或透過其中一個 SDK。

使用 Azure 入口網站

  1. 登入 Azure 入口網站

  2. 建立新的 Azure Cosmos DB 帳戶,或選取現有的帳戶。

  3. 開啟 [資料總管] 窗格,然後選取您要處理的容器。

  4. 按一下 [新容器]

  5. 在 [新增容器] 對話方塊中,按一下 [+ 新增唯一索引鍵] 來新增唯一索引鍵項目。

  6. 輸入唯一索引鍵條件限制的路徑

  7. 如有需要,可按一下 [+ 新增唯一索引鍵] 來新增更多唯一索引鍵項目

    Screenshot of unique key constraint entry on Azure portal

使用 PowerShell

若要建立具有唯一索引鍵的容器,請參閱使用唯一索引鍵和 TTL 來建立 Azure Cosmos DB 容器

使用 .NET SDK

使用 .NET SDK v2 建立新的容器時,UniqueKeyPolicy 物件可以用來定義唯一索引鍵的條件限制。

client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("database"), new DocumentCollection
{
    Id = "container",
    PartitionKey = new PartitionKeyDefinition { Paths = new Collection<string>(new List<string> { "/myPartitionKey" }) },
    UniqueKeyPolicy = new UniqueKeyPolicy
    {
        UniqueKeys = new Collection<UniqueKey>(new List<UniqueKey>
        {
            new UniqueKey { Paths = new Collection<string>(new List<string> { "/firstName", "/lastName", "/emailAddress" }) },
            new UniqueKey { Paths = new Collection<string>(new List<string> { "/address/zipCode" }) }
        })
    }
});

使用 Java SDK

使用 Java SDK 建立新的容器時,UniqueKeyPolicy 物件可以用來定義唯一索引鍵的條件限制。

// create a new DocumentCollection object
DocumentCollection container = new DocumentCollection();
container.setId("container");

// create array of strings and populate them with the unique key paths
Collection<String> uniqueKey1Paths = new ArrayList<String>();
uniqueKey1Paths.add("/firstName");
uniqueKey1Paths.add("/lastName");
uniqueKey1Paths.add("/emailAddress");
Collection<String> uniqueKey2Paths = new ArrayList<String>();
uniqueKey2Paths.add("/address/zipCode");

// create UniqueKey objects and set their paths
UniqueKey uniqueKey1 = new UniqueKey();
UniqueKey uniqueKey2 = new UniqueKey();
uniqueKey1.setPaths(uniqueKey1Paths);
uniqueKey2.setPaths(uniqueKey2Paths);

// create a new UniqueKeyPolicy object and set its unique keys
UniqueKeyPolicy uniqueKeyPolicy = new UniqueKeyPolicy();
Collection<UniqueKey> uniqueKeys = new ArrayList<UniqueKey>();
uniqueKeys.add(uniqueKey1);
uniqueKeys.add(uniqueKey2);
uniqueKeyPolicy.setUniqueKeys(uniqueKeys);

// set the unique key policy
container.setUniqueKeyPolicy(uniqueKeyPolicy);

// create the container
client.createCollection(String.format("/dbs/%s", "database"), container, null);

使用 Node.js SDK

使用 Node.js SDK 建立新的容器時,UniqueKeyPolicy 物件可以用來定義唯一索引鍵的條件限制。

client.database('database').containers.create({
    id: 'container',
    uniqueKeyPolicy: {
        uniqueKeys: [
            { paths: ['/firstName', '/lastName', '/emailAddress'] },
            { paths: ['/address/zipCode'] }
        ]
    }
});

使用 Python SDK

使用 Python SDK 建立新的容器時,唯一的索引鍵條件限制可以指定為字典一部分,以作為參數傳遞。

client.CreateContainer('dbs/' + config['DATABASE'], {
    'id': 'container',
    'uniqueKeyPolicy': {
        'uniqueKeys': [
            {'paths': ['/firstName', '/lastName', '/emailAddress']},
            {'paths': ['/address/zipCode']}
        ]
    }
})

下一步