Definire chiavi univoche per un contenitore azure Cosmos DB

SI APPLICA A: NoSQL

Questo articolo illustra i diversi modi per definire chiavi univoche durante la creazione di un contenitore Azure Cosmos DB. È attualmente possibile eseguire questa operazione usando il portale di Azure o tramite uno degli SDK.

Usare il portale di Azure

  1. Accedere al portale di Azure.

  2. Creare un nuovo account Azure Cosmos DB o selezionare uno esistente.

  3. Aprire il riquadro Esplora dati e selezionare il contenitore da usare.

  4. Fare clic su Nuovo contenitore.

  5. Nella finestra di dialogo Aggiungi contenitore, fare clic su + Aggiungi chiave univoca per aggiungere una voce di chiave univoca.

  6. Immettere il percorso o i percorsi del vincolo della chiave univoca

  7. Se necessario, aggiungere altre voci di chiave univoca facendo clic su + Aggiungi chiave univoca

    Screenshot di voce del vincolo della chiave univoca nel portale di Azure

Usare PowerShell

Per creare un contenitore con chiavi univoche, vedere Creare un contenitore azure Cosmos DB con chiave univoca e TTL

Usare .NET SDK

Quando si crea un nuovo contenitore usando .NET SDK v2, è possibile usare un oggetto UniqueKeyPolicy per definire vincoli di chiave univoca.

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

Usare Java SDK

Quando si crea un nuovo contenitore usando Java SDK, è possibile usare un oggetto UniqueKeyPolicy per definire vincoli di chiave univoca.

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

Usare Node.js SDK

Quando si crea un nuovo contenitore usando Node.js SDK, è possibile usare un oggetto UniqueKeyPolicy per definire vincoli di chiave univoca.

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

Usare Python SDK

Quando si crea un nuovo contenitore usando Python SDK, è possibile specificare vincoli di chiave univoca come parte del dizionario passato come parametro.

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

Passaggi successivi