Share via


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

VAN TOEPASSING OP: NoSQL

Dit artikel bevat 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 via Azure Portal of via een van de SDK's.

De Azure-portal gebruiken

  1. Meld u aan bij het Azure-portaal.

  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 de pad(en) van de unieke sleutelbeperking in

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

    Schermopname van de vermelding unieke sleutelbeperking in Azure Portal

PowerShell gebruiken

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

.NET-SDK gebruiken

Wanneer u een nieuwe container maakt met behulp van de .NET SDK v2, kan een UniqueKeyPolicy object worden gebruikt om unieke sleutelbeperkingen 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