Partilhar via


Definir chaves exclusivas para um contêiner do Azure Cosmos DB

APLICA-SE A: NoSQL

Este artigo apresenta as diferentes maneiras de definir chaves exclusivas ao criar um contêiner do Azure Cosmos DB. Atualmente, é possível executar essa operação usando o portal do Azure ou por meio 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 existente.

  3. Abra o painel Data Explorer e selecione o contêiner no qual deseja trabalhar.

  4. Clique em Novo Contentor.

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

  6. Insira o(s) caminho(s) da restrição de chave exclusiva

  7. Se necessário, adicione mais entradas de chave exclusivas clicando 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 contêiner com chaves exclusivas, consulte Criar um contêiner do Azure Cosmos DB com chave exclusiva e TTL

Utilizar o .NET SDK

Ao criar um novo contêiner usando o .NET SDK v2, um UniqueKeyPolicy objeto pode ser usado 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" }) }
        })
    }
});

Usar o Java SDK

Ao criar um novo contêiner usando o Java SDK, um UniqueKeyPolicy objeto pode ser usado 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);

Usar o SDK do Node.js

Ao criar um novo contêiner usando o Node.js SDK, um UniqueKeyPolicy objeto pode ser usado 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 contêiner usando o Python SDK, restrições de chave exclusivas podem ser especificadas como parte do dicionário passado como parâmetro.

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

Próximos passos