Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Noms d'attributs d'expression (alias) dans DynamoDB
Un nom d'attribut d'expression est un alias (ou un espace réservé) que vous utilisez dans une expression Amazon DynamoDB comme alternative au nom d'attribut réel. Le nom d'attribut d'une expression doit commencer par un signe dièse (#
) et être suivi d'un ou de plusieurs caractères alphanumériques. Le caractère de soulignement (_
) est également autorisé.
Cette section présente plusieurs cas dans lesquels vous devez utiliser des noms d'attributs d'expression.
Note
Les exemples de cette section utilisent le AWS Command Line Interface (AWS CLI).
Rubriques
Mots réservés
Dans certains cas, vous pouvez avoir besoin d'écrire une expression contenant un nom d'attribut qui entre en conflit avec un mot réservé DynamoDB. (Pour obtenir la liste complète des mots réservés, consultez Mots réservés dans DynamoDB.)
Par exemple, l' AWS CLI exemple suivant échouerait car il COMMENT
s'agit d'un mot réservé.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Comment"
Pour contourner cela, vous pouvez remplacer Comment
par un nom d'attribut d'expression tel que #c
. Le #
(signe de la livre) est obligatoire et indique qu'il s'agit d'un espace réservé pour un nom d'attribut. L' AWS CLI exemple devrait maintenant ressembler à ce qui suit.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#c" \ --expression-attribute-names '{"#c":"Comment"}'
Note
Si un nom d'attribut commence par un nombre ou contient un espace ou un mot réservé, vous devez utiliser un nom d'attribut d'expression pour remplacer ce nom d'attribut dans l'expression.
Noms d'attributs contenant des caractères spéciaux
Dans une expression, un point (« . ») est interprété comme un caractère de séparation dans chemin d'accès à un document. Cependant, DynamoDB vous permet également d'utiliser un caractère point et d'autres caractères spéciaux, tels qu'un trait d'union (« - ») dans le cadre d'un nom d'attribut. Cela peut être ambiguë dans certains cas. À titre d'illustration, supposons que vous souhaitiez récupérer l'attribut Safety.Warning
d'un élément ProductCatalog
(consultez Référence aux attributs des éléments lors de l'utilisation d'expressions dans DynamoDB).
Supposons que vous vouliez accéder à Safety.Warning
avec une expression de projection.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "Safety.Warning"
DynamoDB renvoie un résultat vide au lieu de la chaîne attendue (« Always
wear a helmet
»). Cela est dû au fait que DynamoDB interprète un point dans une expression comme un séparateur de chemin d'accès de document. Dans ce cas, vous devez définir un nom d'attribut d'expression (tel que #sw
) en remplacement de Safety.Warning
. Vous pouvez ensuite utiliser l'expression de projections suivante.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#sw" \ --expression-attribute-names '{"#sw":"Safety.Warning"}'
DynamoDB renvoie alors le résultat correct.
Note
Si un nom d'attribut contient un point (« . ») ou un trait d'union (« - »), vousdevez utiliser un nom d'attribut d'expression pour remplacer le nom de cet attribut dans l'expression.
Attributs imbriqués
Supposons que vous souhaitiez accéder à l'attribut ProductReviews.OneStar
imbriqué. Dans le nom d'un attribut d'expression, DynamoDB traite le point («. ») comme un caractère dans le nom d'un attribut. Pour référencer l'attribut imbriqué, définissez un nom d'attribut d'expression pour chaque élément du chemin du document :
-
#pr — ProductReviews
-
#1star — OneStar
Vous pouvez ensuite utiliser #pr.#1star
pour l'expression de projection.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "#pr.#1star" \ --expression-attribute-names '{"#pr":"ProductReviews", "#1star":"OneStar"}'
DynamoDB renvoie alors le résultat correct.
Référencement répété des noms d'attributs
Les noms d'attributs d'expression sont utiles lorsque vous devez faire référence au même nom d'attribut à plusieurs reprises. Par exemple, imaginons l'expression suivante pour récupérer certains des commentaires d'un élément ProductCatalog
.
aws dynamodb get-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"123"}}' \ --projection-expression "ProductReviews.FiveStar, ProductReviews.ThreeStar, ProductReviews.OneStar"
Pour le rendre plus concis, vous pouvez remplacer ProductReviews
par un nom d'attribut d'expression tel que #pr
. L'expression révisée ressemblerait maintenant à ceci.
-
#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"}'
Si vous avez défini un nom d'attribut d'expression, vous devez l'utiliser systématiquement tout au long de l'expression entière. En outre, vous ne pouvez pas ignorer le symbole #
.