Definir chaves exclusivas para um contentor do Azure Cosmos DB

APLICA-SE A: NoSQL

Este artigo apresenta as diferentes formas de definir chaves exclusivas ao criar um contentor do Azure Cosmos DB. Atualmente, é possível efetuar esta operação com o portal do Azure ou através de um dos SDKs.

Utilizar o portal do Azure

  1. Inicie sessão no Portal do Azure.

  2. Crie uma nova conta do Azure Cosmos DB ou selecione uma conta existente.

  3. Abra o painel Data Explorer e selecione o contentor no qual pretende trabalhar.

  4. Clique em Novo Contentor.

  5. Na caixa de diálogo Adicionar Contentor , clique em + Adicionar chave exclusiva para adicionar uma entrada de chave exclusiva.

  6. Introduza os caminhos da restrição de chave exclusiva

  7. Se necessário, adicione mais entradas de chave exclusivas ao clicar em + Adicionar chave exclusiva

    Captura de ecrã da entrada de restrição de chave exclusiva no portal do Azure

Utilizar o PowerShell

Para criar um contentor com chaves exclusivas, veja Criar um contentor do Azure Cosmos DB com chave exclusiva e TTL

Utilizar o .NET SDK

Ao criar um novo contentor com o SDK .NET v2, pode ser utilizado um UniqueKeyPolicy objeto para definir restrições de chave exclusivas.

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

Utilizar o SDK Java

Ao criar um novo contentor com o SDK Java, pode ser utilizado um UniqueKeyPolicy objeto para definir restrições de chave exclusivas.

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

Utilizar o SDK do Node.js

Ao criar um novo contentor com o SDKNode.js, pode ser utilizado um UniqueKeyPolicy objeto para definir restrições de chave exclusivas.

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

Utilizar o SDK Python

Ao criar um novo contentor com o SDK python, podem ser especificadas restrições de chave exclusivas como parte do dicionário transmitido como parâmetro.

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

Passos seguintes