Azure Cosmos コンテナーの一意のキーを定義するDefine unique keys for an Azure Cosmos container

この記事では、Azure Cosmos コンテナーを作成するときに、一意のキー を定義するさまざまな方法を示します。This article presents the different ways to define unique keys when creating an Azure Cosmos container. 現在、Azure portal を使用するか、Sdk のいずれかでこの操作を実行することになります。It's currently possible to perform this operation either by using the Azure portal or through one of the SDKs.

Azure ポータルの使用Use the Azure portal

  1. Azure Portal にサインインします。Sign in to the Azure portal.

  2. 新しい Azure Cosmos アカウントを作成するか、既存のアカウントを選択します。Create a new Azure Cosmos account or select an existing one.

  3. [データ エクスプローラー] ウィンドウを開いて、操作の対象となるコンテナーを選択します。Open the Data Explorer pane and select the container that you want to work on.

  4. [新しいコンテナー] をクリックします。Click on New Container.

  5. [コンテナーの追加] ダイアログで、 [+ Add unique key] (+ 一意のキーの追加) をクリックして一意のキー エントリを追加します。In the Add Container dialog, click on + Add unique key to add a unique key entry.

  6. 一意キー制約のパスを入力しますEnter the path(s) of the unique key constraint

  7. 必要な場合は、 [+ Add unique key] (+ 一意のキーの追加) をクリックして、一意のキー エントリを追加しますIf needed, add more unique key entries by clicking on + Add unique key

    Azure portal での一意キー制約エントリのスクリーンショット

PowerShell の使用Use Powershell

一意のキーを持つコンテナーを作成する方法については、一意のキーと TTL を使用した Azure Cosmos コンテナーの作成に関するページを参照してください。To create a container with unique keys see, Create an Azure Cosmos container with unique key and TTL

.NET SDK V2 の使用Use the .NET SDK V2

.NET SDK v2 を使用して新しいコンテナーを作成するときに、UniqueKeyPolicy オブジェクトを使用して一意キー制約を定義できます。When creating a new container using the .NET SDK v2, a UniqueKeyPolicy object can be used to define unique key constraints.

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" }) }
        })
    }
});

.NET SDK V3 の使用Use the .NET SDK V3

.NET SDK v3 を使用して新しいコンテナーを作成するときに、SDK の fluent API を使用して、簡潔で読みやすい方法で一意のキーを宣言します。When creating a new container using the .NET SDK v3, use the SDK's fluent API to declare unique keys in a concise and readable way.

await client.GetDatabase("database").DefineContainer(name: "container", partitionKeyPath: "/myPartitionKey")
    .WithUniqueKey()
        .Path("/firstName")
        .Path("/lastName")
        .Path("/emailAddress")
    .Attach()
    .WithUniqueKey()
        .Path("/address/zipCode")
    .Attach()
    .CreateIfNotExistsAsync();

Java SDK の使用Use the Java SDK

Java SDK を使用して新しいコンテナーを作成するときに、UniqueKeyPolicy オブジェクトを使用して一意キー制約を定義できます。When creating a new container using the Java SDK, a UniqueKeyPolicy object can be used to define unique key constraints.

// 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 の使用Use the Node.js SDK

Node.js SDK を使用して新しいコンテナーを作成するときに、UniqueKeyPolicy オブジェクトを使用して一意キー制約を定義できます。When creating a new container using the Node.js SDK, a UniqueKeyPolicy object can be used to define unique key constraints.

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

Python SDK の使用Use the Python SDK

Python SDK を使用して新しいコンテナーを作成するときに、パラメーターとして渡されるディクショナリの一部として一意キー制約を指定できます。When creating a new container using the Python SDK, unique key constraints can be specified as part of the dictionary passed as parameter.

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

次の手順Next steps