Partage via


Définir des clés uniques pour un conteneur Azure Cosmos DB

S’APPLIQUE À : NoSQL

Cet article présente les différentes façons de définir des clés uniques lors de la création d’un conteneur Azure Cosmos DB. Il est actuellement possible d’effectuer cette opération à l’aide du portail Azure ou de l’un des kits SDK.

Utilisation du portail Azure

  1. Connectez-vous au portail Azure.

  2. Créez un compte Azure Cosmos DB ou sélectionnez-en un existant.

  3. Ouvrez le volet Explorateur de données, puis sélectionnez le conteneur avec lequel vous voulez travailler.

  4. Cliquez sur Nouveau conteneur.

  5. Dans la boîte de dialogue Ajouter un conteneur, cliquez sur + Ajouter une clé unique pour ajouter une entrée de clé unique.

  6. Entrez le ou les chemins de la contrainte de clé unique.

  7. Si nécessaire, ajoutez d’autres entrées de clés uniques en cliquant sur + Ajouter une clé unique

    Capture d’écran d’entrée de contrainte de clé unique dans le portail Azure

Utiliser PowerShell

Pour créer un conteneur à clés uniques, consultez Créer un conteneur Azure Cosmos DB à clé unique et TTL

Utiliser le kit de développement logiciel (SDK) .NET

Lors de la création d’un conteneur à l’aide du SDK .NET v2, vous pouvez utiliser un objet UniqueKeyPolicy pour définir des contraintes de clé unique.

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

Utiliser le SDK Java

Lors de la création d’un conteneur à l’aide du SDK Java, vous pouvez utiliser un objet UniqueKeyPolicy pour définir des contraintes de clé unique.

// 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);

Utiliser le SDK Node.js

Lors de la création d’un conteneur à l’aide du SDK Node.js, vous pouvez utiliser un objet UniqueKeyPolicy pour définir des contraintes de clé unique.

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

Utiliser le SDK Python

Lors de la création d’un conteneur à l’aide du SDK Python, vous pouvez spécifier les contraintes de clé unique en tant que partie du dictionnaire passé comme paramètre.

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

Étapes suivantes