

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

# QueryFilter (eredità)
<a name="LegacyConditionalParameters.QueryFilter"></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 *FilterExpression*invece.](#FilterExpression.instead). 

In un'operazione `Query`, parametro condizionale legacy `QueryFilter` è una condizione che valuta i risultati delle query dopo la lettura degli elementi e restituisce solo i valori desiderati.

Questo parametro non supporta gli attributi di tipo List o Map.

**Nota**  
`QueryFilter` viene applicato dopo che gli elementi sono già stati letti; il processo di filtraggio non consuma alcuna unità di capacità di lettura aggiuntiva.

Se si fornisce più di una condizione nella mappa `QueryFilter`, allora, per impostazione predefinita, tutte le condizioni devono restituire true. In altre parole, le condizioni vengono combinate utilizzando l’operatore `AND`. È possibile utilizzare il parametro [ConditionalOperator (eredità)](LegacyConditionalParameters.ConditionalOperator.md) per applicare l'operatore OR alle condizioni. In questo caso, almeno una delle condizioni deve restituire true, se non tutte.

Tenere presente che `QueryFilter` non consente gli attributi chiave. Non è possibile definire una condizione di filtro su una chiave di partizione o una chiave di ordinamento.

Ogni elemento `QueryFilter` è 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 in List dipende dall'operatore specificato in `ComparisonOperator`.

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

  I confronti di valori String per maggiore di, uguale o minore di sono basati sulla 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.

  Per informazioni su come specificare i tipi di dati in JSON, consulta [API DynamoDB di basso livello](Programming.LowLevelAPI.md).
+  `ComparisonOperator`: un comparatore per valutare gli attributi. Ad esempio, uguale a, maggiore di e minore di.

  Sono disponibili i seguenti operatori di confronto:

   `EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN` 

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

Si supponga di voler eseguire una query sulla tabella *Music* e di applicare una condizione agli elementi corrispondenti. È possibile utilizzare una richiesta `Query` con un parametro `QueryFilter`, come in questo esempio AWS CLI :

```
aws dynamodb query \
    --table-name Music \
    --key-conditions '{
        "Artist": {
            "ComparisonOperator": "EQ",
            "AttributeValueList": [ {"S": "No One You Know"} ]
        }   
    }' \
    --query-filter '{
        "Price": {
            "ComparisonOperator": "GT",
            "AttributeValueList": [ {"N": "1.00"} ]
        }   
    }'
```

Puoi invece utilizzare `FilterExpression`:

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a' \
    --filter-expression 'Price > :p' \
    --expression-attribute-values '{
        ":p": {"N":"1.00"}, 
        ":a": {"S":"No One You Know"}
    }'
```