

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à.

# Riferimento agli attributi degli elementi quando si utilizzano le espressioni in DynamoDB
<a name="Expressions.Attributes"></a>

In questa sezione viene descritto come fare riferimento agli attributi degli elementi in una espressione in Amazon DynamoDB. Puoi utilizzare qualsiasi attributo, anche se è nidificato all'interno di più elenchi e mappe.

**Topics**
+ [Attributi di primo livello](#Expressions.Attributes.TopLevelAttributes)
+ [Attributi nidificati](#Expressions.Attributes.NestedAttributes)
+ [Percorsi dei documenti](#Expressions.Attributes.NestedElements.DocumentPathExamples)

**Un articolo di esempio: ProductCatalog**  
Gli esempi presenti in questa pagina utilizzano il seguente elemento di esempio presente nella tabella `ProductCatalog`. (Questa tabella è descritta in [Tabelle e dati di esempio da utilizzare in 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"
 }
```

Tenere presente quanto segue:
+ il valore della chiave di partizione (`Id`) è `123`. Non vi è chiave di ordinamento;
+ la maggior parte degli attributi dispone di tipi di dati scalari, come `String`, `Number`, `Boolean` e `Null`;
+ un attributo (`Color`) è di tipo `String Set`;
+ i seguenti attributi sono tipi di dati dei documenti:
  + elenco di `RelatedItems`. Ogni elemento è un `Id` per un prodotto correlato;
  + una mappa di `Pictures`. Ogni elemento rappresenta una breve descrizione di un'immagine insieme all'URL del file dell'immagine corrispondente;
  + una mappa di `ProductReviews`. Ogni elemento rappresenta una classificazione e un elenco delle valutazioni corrispondenti a quella classificazione. Inizialmente, questa mappa viene popolata con valutazioni di cinque stelle e di una stella.

## Attributi di primo livello
<a name="Expressions.Attributes.TopLevelAttributes"></a>

Un attributo si definisce di *primo livello* se non è incorporato in un altro attributo. Per gli elementi `ProductCatalog`, gli attributi di primo livello sono:
+ `Id`
+ `Title`
+ `Description`
+ `BicycleType`
+ `Brand`
+ `Price`
+ `Color`
+ `ProductCategory`
+ `InStock`
+ `QuantityOnHand`
+ `RelatedItems`
+ `Pictures`
+ `ProductReviews`
+ `Comment`
+ `Safety.Warning`

Tutti questi attributi di primo livello sono scalari, eccetto `Color` (elenco), `RelatedItems` (elenco), `Pictures` (mappa) e `ProductReviews` (mappa).

## Attributi nidificati
<a name="Expressions.Attributes.NestedAttributes"></a>

Un attributo si definisce *nidificato* se è incorporato in un altro attributo. Per ottenere l'accesso a un attributo nidificato, usa gli *operatori di deferenziazione*:
+ `[n]`: per gli elementi list
+ `.` (punto): per gli elementi map

### Accesso agli elementi dell'elenco
<a name="Expressions.Attributes.NestedElements.AccessingListElements"></a>

L'operatore di deferenziazione per un elemento dell'elenco è **[*N*]**, dove *n* è il numero dell'elemento. Gli elementi dell'elenco sono a base zero, ovvero [0] rappresenta il primo elemento nell'elenco, [1] il secondo e così via. Ecco alcuni esempi:
+ `MyList[0]`
+ `AnotherList[12]`
+ `ThisList[5][11]`

L'elemento `ThisList[5]` è esso stesso un elenco nidificato. Pertanto, `ThisList[5][11]` si riferisce al dodicesimo elemento in quell'elenco.

Il numero all'interno delle parentesi quadre deve essere un numero intero non negativo. Pertanto, le espressioni seguenti non sono valide:
+ `MyList[-1]`
+ `MyList[0.4]`

### Accesso agli elementi della mappa
<a name="Expressions.Attributes.NestedElements.AccessingMapElements"></a>

L'operatore di deferenziazione per una mappa è **.** (un punto). Usa un punto come separatore tra gli elementi in una mappa:
+ `MyMap.nestedField`
+ `MyMap.nestedField.deeplyNestedField`

## Percorsi dei documenti
<a name="Expressions.Attributes.NestedElements.DocumentPathExamples"></a>

In un espressione si utilizza un *percorso del documento* per comunicare a DynamoDB dove trovare un attributo. Per gli attributi di primo livello, il percorso del documento è semplicemente il nome dell'attributo. Per un attributo nidificato, costruisci il percorso del documento usando gli operatori di deferenziazione.

Di seguito sono riportati alcuni esempi di percorsi di documenti. (Fai riferimento all'elemento mostrato in [Riferimento agli attributi degli elementi quando si utilizzano le espressioni in DynamoDB](#Expressions.Attributes)).
+ Un attributo scalare di primo livello:

   `Description`
+ Un attributo dell'elenco di primo livello. (Questo restituisce l'intero elenco, non solo alcuni elementi).

  `RelatedItems`
+ Il terzo elemento dall'elenco `RelatedItems`. (Ricorda che gli elementi dell'elenco sono a base zero).

  `RelatedItems[2]`
+ L'immagine di vista frontale del prodotto.

  `Pictures.FrontView`
+ Tutte le valutazioni da cinque stelle.

  `ProductReviews.FiveStar`
+ La prima delle valutazioni da cinque stelle.

  `ProductReviews.FiveStar[0]`

**Nota**  
La profondità massima per un percorso del documento è 32. Pertanto, il numero di operatori di deferenziazione in un percorso non può eccedere questo limite.

È possibile utilizzare qualsiasi nome di attributo nel percorso di un documento purché soddisfi i seguenti requisiti:
+ Il primo carattere è una lettera (`a-z` o `A-Z`) o un numero (`0-9`)
+ Il secondo carattere (se presente) è una lettera (`a-z` o `A-Z`)

**Nota**  
Se un nome di attributo non soddisfa questo requisito, devi definire un nome di attributo dell'espressione come un segnaposto.

Per ulteriori informazioni, consulta [Nomi di attributi di espressione (alias) in DynamoDB](Expressions.ExpressionAttributeNames.md).