

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

# KeyConditions (eredità)
<a name="LegacyConditionalParameters.KeyConditions"></a>

**Nota**  
Consigliamo di utilizzare i nuovi parametri di espressione piuttosto che i parametri precedenti, se possibile. Per ulteriori informazioni, consulta [Utilizzo di espressioni in DynamoDB](Expressions.md). Per informazioni specifiche sul nuovo parametro che sostituisce questo, consulta [usa *KeyConditionExpression*invece.](#KeyConditionExpression.instead). 

Il parametro condizionale legacy `KeyConditions` contiene i criteri di selezione per un'operazione `Query`. Per una query su una tabella, è possibile disporre di condizioni solo sugli attributi della chiave primaria della tabella. È necessario specificare il nome e il valore della chiave di partizione come condizione `EQ`. Facoltativamente, è possibile fornire una seconda condizione che fa riferimento alla chiave di ordinamento.

**Nota**  
Se non si specifica una condizione della chiave di ordinamento, verranno recuperati tutti gli elementi che corrispondono alla chiave di partizione. Se è presente `FilterExpression` o `QueryFilter`, verrà applicato dopo che gli elementi sono stati recuperati.

Per una query su un indice, è possibile disporre di condizioni solo sugli attributi della chiave di indice. È necessario specificare il nome e il valore della chiave di partizione dell'indice come condizione `EQ`. Facoltativamente, è possibile fornire una seconda condizione che fa riferimento alla chiave di ordinamento dell'indice.

Ogni elemento `KeyConditions` è costituito da un nome di attributo da confrontare, insieme a quanto segue:
+  `AttributeValueList`: uno o più valori da valutare rispetto all'attributo fornito. Il numero di valori nell'elenco dipende dal `ComparisonOperator` utilizzato.

  Per il tipo Number, i confronti dei valori sono numerici.

  I confronti di valori String per maggiore di, uguale o minore di sono basati su Unicode con codifica binaria UTF-8. Ad esempio, `a` è maggiore di `A` e `a` è maggiore di `B`.

  Per il tipo Binary, quando confronta i valori binari DynamoDB tratta ogni byte dei dati binari come non firmato.
+  `ComparisonOperator`: un comparatore per valutare gli attributi. Ad esempio, uguale a, maggiore di e minore di.

  Per `KeyConditions`, sono supportati solo i seguenti operatori di confronto:

   `EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN` 

  Di seguito sono riportate le descrizioni di questi operatori di confronto.
  +  `EQ`: uguale. 

     `AttributeValueList` può contenere solo un `AttributeValue` di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non è uguale a `{"N":"6"}`. Inoltre, `{"N":"6"}` non è uguale a `{"NS":["6", "2", "1"]}`.
  +  `LE`: minore o uguale a. 

     `AttributeValueList` può contenere solo un elemento `AttributeValue` di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non è uguale a `{"N":"6"}`. Inoltre, `{"N":"6"}` non si confronta con `{"NS":["6", "2", "1"]}`.
  +  `LT`: minore di. 

     `AttributeValueList` può contenere solo un `AttributeValue` di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non è uguale a `{"N":"6"}`. Inoltre, `{"N":"6"}` non si confronta con `{"NS":["6", "2", "1"]}`.
  +  `GE`: maggiore o uguale a. 

     `AttributeValueList` può contenere solo un elemento `AttributeValue` di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non è uguale a `{"N":"6"}`. Inoltre, `{"N":"6"}` non si confronta con `{"NS":["6", "2", "1"]}`.
  +  `GT`: maggiore di. 

     `AttributeValueList` può contenere solo un elemento `AttributeValue` di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non è uguale a `{"N":"6"}`. Inoltre, `{"N":"6"}` non si confronta con `{"NS":["6", "2", "1"]}`.
  +  `BEGINS_WITH`: controlla la presenza di un prefisso. 

     `AttributeValueList` può contenere solo un `AttributeValue` di tipo String o Binary (non un tipo Number o Set). L'attributo di destinazione del confronto deve essere String o Binary (non un tipo Number o Set).
  +  `BETWEEN`: maggiore di o uguale a primo valore e minore di o uguale a secondo valore. 

     `AttributeValueList` deve contenere due elementi`AttributeValue` dello stesso tipo, String, Number o Binary (non un tipo Set). Un attributo di destinazione corrisponde se il valore di destinazione è maggiore o uguale al primo elemento e minore o uguale al secondo elemento. Se un elemento contiene un elemento `AttributeValue` di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, `{"S":"6"}` non si confronta con `{"N":"6"}`. Inoltre, `{"N":"6"}` non si confronta con `{"NS":["6", "2", "1"]}`. 

## Usa *KeyConditionExpression*invece: Esempio
<a name="KeyConditionExpression.instead"></a>

Si supponga di voler recuperare diversi elementi con la stessa chiave di partizione dalla tabella *Music*. Puoi usare una `Query` richiesta con un `KeyConditions` parametro, come in questo AWS CLI esempio:

```
aws dynamodb query \
    --table-name Music \
    --key-conditions '{
        "Artist":{
            "ComparisonOperator":"EQ",
            "AttributeValueList": [ {"S": "No One You Know"} ]
        },
        "SongTitle":{
            "ComparisonOperator":"BETWEEN",
            "AttributeValueList": [ {"S": "A"}, {"S": "M"} ]
        }
    }'
```

Puoi invece utilizzare `KeyConditionExpression`:

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":a": {"S": "No One You Know"}, 
        ":t1": {"S": "A"}, 
        ":t2": {"S": "M"}
    }'
```