Nomi degli attributi di espressione (alias) in DynamoDB - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nomi degli attributi di espressione (alias) in DynamoDB

Il nome di un attributo di espressione è un alias (o segnaposto) che usi in un'espressione Amazon DynamoDB come alternativa al nome di un attributo effettivo. Il nome di un attributo di espressione deve iniziare con il simbolo cancelletto (#) ed essere seguito da uno o più caratteri alfanumerici. È consentito anche il carattere di sottolineatura (_).

In questa sezione vengono descritte diverse situazioni in cui è necessario utilizzare i nomi di attributi di espressione.

Nota

Gli esempi di questa sezione utilizzano il AWS Command Line Interface (AWS CLI).

Parole riservate

A volte potrebbe essere necessario scrivere un'espressione contenente un nome di attributo in conflitto con una parola riservata di DynamoDB. Per un elenco completo delle parole riservate, consulta Parole riservate in DynamoDB.)

Ad esempio, l' AWS CLI esempio seguente non riuscirà perché COMMENT è una parola riservata.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Comment"

Come soluzione alternativa, puoi sostituire Comment con un nome di attributo di espressione come #c. Il simbolo # (cancelletto) è obbligatorio e indica che si tratta di un segnaposto per un nome di attributo. L' AWS CLI esempio sarebbe ora simile al seguente.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#c" \ --expression-attribute-names '{"#c":"Comment"}'
Nota

Se un nome di attributo inizia con un numero, contiene uno spazio o una parola riservata, è necessario utilizzare un nome di attributo di espressione per sostituire il nome di tale attributo nell'espressione.

Nomi di attributi contenenti caratteri speciali

Un punto (".") in un'espressione viene interpretato come carattere separatore in un percorso di un documento. Tuttavia, DynamoDB consente anche di utilizzare un punto e altri caratteri speciali, ad esempio, un trattino ("-") come parte di un nome di attributo. In alcuni casi questo può portare ad ambiguità. A titolo illustrativo, supponi di voler recuperare l'attributo Safety.Warning da un elemento ProductCatalog (consulta Riferimento agli attributi degli elementi quando si utilizzano espressioni in DynamoDB).

Supponi di voler accedere a Safety.Warning utilizzando un'espressione di proiezione.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Safety.Warning"

DynamoDB restituisce un risultato vuoto, anziché la stringa prevista ("Always wear a helmet"). Ciò accade poiché DynamoDB interpreta un punto in un'espressione come separatore del percorso di un documento. In questo caso, occorre definire un nome di attributo di espressione (ad esempio #sw) come sostituto di Safety.Warning. Puoi quindi utilizzare l'espressione di proiezione seguente.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#sw" \ --expression-attribute-names '{"#sw":"Safety.Warning"}'

DynamoDB restituirebbe quindi il risultato corretto.

Nota

Se il nome di un attributo contiene un punto (".") o un trattino ("-"), è necessario utilizzare un nome di attributo di espressione per sostituire il nome di tale attributo nell'espressione.

Attributi nidificati

Supponiamo di voler accedere all'attributo annidato. ProductReviews.OneStar Nel nome di un attributo di espressione, DynamoDB tratta il punto («.») come un carattere all'interno del nome di un attributo. Per fare riferimento all'attributo annidato, definisci un nome di attributo di espressione per ogni elemento nel percorso del documento:

  • #pr — ProductReviews

  • #1star — OneStar

Puoi quindi utilizzare #pr.#1star per l'espressione di proiezione.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.#1star" \ --expression-attribute-names '{"#pr":"ProductReviews", "#1star":"OneStar"}'

DynamoDB restituirebbe quindi il risultato corretto.

Fare ripetutamente riferimento ai nomi degli attributi

I nomi di attributo di espressione sono utili quando si vuole fare riferimento ripetutamente allo stesso nome di attributo. Ad esempio, considera la seguente espressione per recuperare alcune valutazioni da un elemento di ProductCatalog.

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "ProductReviews.FiveStar, ProductReviews.ThreeStar, ProductReviews.OneStar"

Per renderlo più conciso, puoi sostituire ProductReviews con un nome di attributo di espressione come #pr. L'aspetto dell'espressione rivista è ora simile al seguente.

  • #pr.FiveStar, #pr.ThreeStar, #pr.OneStar

aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.FiveStar, #pr.ThreeStar, #pr.OneStar" \ --expression-attribute-names '{"#pr":"ProductReviews"}'

Se definisci un nome di attributo di espressione, è necessario usarlo in maniera uniforme nell'intera espressione. Inoltre, non puoi omettere il simbolo #.