Definición de claves únicas para un contenedor de Azure Cosmos DB

SE APLICA A: NoSQL

En este artículo se presentan las distintas formas de definir claves únicas al crear un contenedor de Azure Cosmos  DB. Actualmente, es posible realizar esta operación mediante Azure Portal o uno de los SDK.

Uso de Azure Portal

  1. Inicie sesión en Azure Portal.

  2. Cree una cuenta de Azure Cosmos DB o seleccione una existente.

  3. Abra el panel Data Explorer y seleccione el contenedor en el que quiere trabajar.

  4. Haga clic en Nuevo contenedor.

  5. En el cuadro de diálogo Agregar contenedor, haga clic en + Add unique key (+ Agregar clave única) para agregar una única entrada de clave.

  6. Escriba la ruta o rutas de la restricción de clave única

  7. Si es necesario, puede agregar más entradas de clave única si hace clic en + Add unique key (+ Agregar clave única).

    Captura de pantalla de una entrada de restricción de clave única en Azure Portal

Uso de PowerShell

Para crear un contenedor con claves únicas, consulte Creación de un contenedor de Azure Cosmos DB con una clave única y TTL.

Uso del SDK de .NET

Al crear un contenedor mediante .NET SDK v2, se puede usar un objeto UniqueKeyPolicy para definir las restricciones de clave única.

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

Uso del SDK de Java

Al crear un contenedor mediante el SDK de Java, se puede usar un objeto UniqueKeyPolicy para definir las restricciones de clave única.

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

Uso del SDK de Node.js

Al crear un contenedor mediante el SDK de Node.js, se puede usar un objeto UniqueKeyPolicy para definir las restricciones de clave única.

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

Uso del SDK de Python

Al crear un nuevo contenedor mediante el SDK de Python, se pueden especificar restricciones de clave única como parte del diccionario pasado como parámetro.

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

Pasos siguientes