Unieke sleutels definiëren voor een Azure Cosmos DB-container

VAN TOEPASSING OP: NoSQL

In dit artikel vindt u de verschillende manieren om unieke sleutels te definiëren bij het maken van een Azure Cosmos DB-container. Het is momenteel mogelijk om deze bewerking uit te voeren met behulp van de Azure Portal of via een van de SDK's.

De Azure-portal gebruiken

  1. Meld u aan bij de Azure-portal.

  2. Maak een nieuw Azure Cosmos DB-account of selecteer een bestaand account.

  3. Open het deelvenster Data Explorer en selecteer de container waaraan u wilt werken.

  4. Klik op Nieuwe container.

  5. Klik in het dialoogvenster Container toevoegen op + Unieke sleutel toevoegen om een unieke sleutelvermelding toe te voegen.

  6. Voer het pad of de pad(en) van de unieke sleutelbeperking in

  7. Voeg indien nodig meer unieke sleutelitems toe door te klikken op + Unieke sleutel toevoegen

    Schermopname van vermelding van unieke sleutelbeperking op Azure Portal

PowerShell gebruiken

Als u een container met unieke sleutels wilt maken, raadpleegt u Een Azure Cosmos DB-container maken met een unieke sleutel en TTL

De .NET SDK gebruiken

Wanneer u een nieuwe container maakt met behulp van de .NET SDK v2, kan een UniqueKeyPolicy object worden gebruikt om beperkingen voor unieke sleutels te definiëren.

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

De Java SDK gebruiken

Wanneer u een nieuwe container maakt met behulp van de Java SDK, kan een UniqueKeyPolicy object worden gebruikt om unieke sleutelbeperkingen te definiëren.

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

De Node.js SDK gebruiken

Wanneer u een nieuwe container maakt met behulp van de Node.js SDK, kan een UniqueKeyPolicy object worden gebruikt om unieke sleutelbeperkingen te definiëren.

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

De Python-SDK gebruiken

Wanneer u een nieuwe container maakt met behulp van de Python SDK, kunnen unieke sleutelbeperkingen worden opgegeven als onderdeel van de woordenlijst die als parameter wordt doorgegeven.

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

Volgende stappen