

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.

# Référencement d’attributs d’élément lors de l’utilisation d’expressions dans DynamoDB
<a name="Expressions.Attributes"></a>

Cette section décrit comment référencer des attributs d’élément dans une expression dans Amazon DynamoDB. Vous pouvez utiliser tout attribut, même s’il est profondément imbriqué dans plusieurs listes et mappages.

**Topics**
+ [Attributs de niveau supérieur](#Expressions.Attributes.TopLevelAttributes)
+ [Attributs imbriqués](#Expressions.Attributes.NestedAttributes)
+ [Chemins d’accès à des documents](#Expressions.Attributes.NestedElements.DocumentPathExamples)

**Un exemple d'article : ProductCatalog**  
Les exemples sur cette page utilisent l’exemple d’élément suivant dans la table `ProductCatalog`. (Cette table est décrite dans [Exemples de tables et de données à utiliser dans DynamoDB](AppendixSampleTables.md).)

```
{
    "Id": 123,
    "Title": "Bicycle 123",
    "Description": "123 description",
    "BicycleType": "Hybrid",
    "Brand": "Brand-Company C",
    "Price": 500,
    "Color": ["Red", "Black"],
    "ProductCategory": "Bicycle",
    "InStock": true,
    "QuantityOnHand": null,
    "RelatedItems": [
        341,
        472,
        649
    ],
    "Pictures": {
        "FrontView": "http://example.com/products/123_front.jpg",
        "RearView": "http://example.com/products/123_rear.jpg",
        "SideView": "http://example.com/products/123_left_side.jpg"
    },
    "ProductReviews": {
	    "FiveStar": [
	    		"Excellent! Can't recommend it highly enough! Buy it!",
	    		"Do yourself a favor and buy this."
	    ],
	    "OneStar": [
	    		"Terrible product! Do not buy this."
	    ]
    },
    "Comment": "This product sells out quickly during the summer",
    "Safety.Warning": "Always wear a helmet"
 }
```

Notez ce qui suit :
+ La valeur de la clé de partition (`Id`) est `123`. Il n’y a aucune clé de tri.
+ La plupart des attributs ont des types de données scalaires, comme `String`, `Number`, `Boolean` et `Null`.
+ Un attribut (`Color`) est un `String Set`.
+ Les attributs suivants sont des types de données de documents :
  + Une liste de `RelatedItems`. Chaque élément est un `Id` pour un produit concerné.
  + Une carte de `Pictures`. Chaque élément est une brève description d’une image, accompagnée d’une URL pour le fichier image correspondant.
  + Une carte de `ProductReviews`. Chaque élément représente une évaluation et une liste de commentaires correspondant à cette évaluation. À l’origine, ce mappage est renseigné avec des commentaires cinq étoiles et une étoile.

## Attributs de niveau supérieur
<a name="Expressions.Attributes.TopLevelAttributes"></a>

Un attribut est dit *de niveau supérieur* lorsqu’il n’est pas imbriqué dans un autre. Dans le cas de l’élément `ProductCatalog`, voici les attributs de niveau supérieur :
+ `Id`
+ `Title`
+ `Description`
+ `BicycleType`
+ `Brand`
+ `Price`
+ `Color`
+ `ProductCategory`
+ `InStock`
+ `QuantityOnHand`
+ `RelatedItems`
+ `Pictures`
+ `ProductReviews`
+ `Comment`
+ `Safety.Warning`

Tous ces attributs de niveau supérieur sont scalaires, à l’exception de `Color` (liste), `RelatedItems` (liste), `Pictures` (mappage) et `ProductReviews` (mappage).

## Attributs imbriqués
<a name="Expressions.Attributes.NestedAttributes"></a>

Un attribut est dit *imbriqué* lorsqu’il est incorporé dans un autre. Accédez à un attribut imbriqué à l’aide d’*opérateurs de déréférençage* :
+ `[n]` – Pour des éléments de liste
+ `.` (point) – Pour des éléments de mappage

### Accès à des éléments de liste
<a name="Expressions.Attributes.NestedElements.AccessingListElements"></a>

L’opérateur de déréférençage pour un élément de liste est **[*n*]**, où *n* est le numéro d’élément. Des éléments de liste sont de base zéro, donc [0] représente le premier élément dans la liste, [1] représente le deuxième et ainsi de suite. Voici quelques exemples :
+ `MyList[0]`
+ `AnotherList[12]`
+ `ThisList[5][11]`

L’élément `ThisList[5]` est lui-même une liste imbriquée. Par conséquent, `ThisList[5][11]` fait référence au douzième élément dans cette liste.

Le nombre entre crochets doit être un nombre entier non négatif. Par conséquent, les expressions suivantes ne sont pas valides :
+ `MyList[-1]`
+ `MyList[0.4]`

### Accès à des éléments de mappage
<a name="Expressions.Attributes.NestedElements.AccessingMapElements"></a>

L’opérateur de déréférençage pour un élément de mappage est **.** (un point). Utilisez un point comme séparateur entre des éléments d’un mappage :
+ `MyMap.nestedField`
+ `MyMap.nestedField.deeplyNestedField`

## Chemins d’accès à des documents
<a name="Expressions.Attributes.NestedElements.DocumentPathExamples"></a>

Dans une expression, vous indiquez à DynamoDB où trouver un attribut à l’aide d’un *chemin d’accès à un document*. Pour un attribut de niveau supérieur, le chemin d’accès au document est simplement le nom d’attribut. Pour un attribut imbriqué, vous construisez le chemin d’accès au document à l’aide d’opérateurs de déréférençage.

Voici quelques exemples d’expressions de chemins d’accès à des documents. (Consultez l’élément présenté dans [Référencement d’attributs d’élément lors de l’utilisation d’expressions dans DynamoDB](#Expressions.Attributes).)
+ Attribut scalaire de niveau supérieur.

   `Description`
+ Attribut de liste de niveau supérieur. (Renvoie la liste entière, et non uniquement certains éléments.)

  `RelatedItems`
+ Le troisième élément de la liste `RelatedItems`. (N’oubliez pas que les éléments de liste sont de base zéro.)

  `RelatedItems[2]`
+ Photo de face du produit.

  `Pictures.FrontView`
+ Tous les commentaires cinq étoiles.

  `ProductReviews.FiveStar`
+ Le premier des commentaires cinq étoiles.

  `ProductReviews.FiveStar[0]`

**Note**  
La profondeur maximale pour un chemin d’accès à un document est de 32. Par conséquent, le nombre d’opérateurs de déréférençage dans un chemin d’accès ne peut pas dépasser cette limite.

Vous pouvez utiliser tout nom d’attribut dans le chemin d’accès à un document, à condition qu’il réponde aux exigences suivantes :
+ Le premier caractère est `a-z` ou `A-Z` et/ou `0-9`.
+ Le second caractère (le cas échéant) est `a-z`, `A-Z`.

**Note**  
Si un nom d’attribut ne répond pas à cette exigence, vous devez définir un nom d’attribut d’expression comme espace réservé.

Pour de plus amples informations, veuillez consulter [Noms d’attributs d’expression (alias) dans DynamoDB](Expressions.ExpressionAttributeNames.md).