

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.

# QueryFilter (héritage)
<a name="LegacyConditionalParameters.QueryFilter"></a>

**Note**  
Dans la mesure du possible, nous vous recommandons d’utiliser les nouveaux paramètres d’expression plutôt que ces paramètres hérités. Pour de plus amples informations, veuillez consulter [Utilisation d’expressions dans DynamoDB](Expressions.md). Pour obtenir des informations précises sur le nouveau paramètre qui remplace celui-ci, [utilisez *FilterExpression*plutôt.](#FilterExpression.instead). 

Dans une opération `Query`, le paramètre conditionnel hérité `QueryFilter` est une condition qui évalue les résultats de la requête après lecture des éléments et renvoie uniquement les valeurs souhaitées.

Ce paramètre ne prend pas en charge les attributs de type Liste ou Mappage.

**Note**  
Un `QueryFilter` est appliqué après lecture des éléments. Le processus de filtrage ne consomme pas d’unités de capacité de lecture supplémentaires.

Si vous spécifiez plusieurs conditions dans le mappage `QueryFilter`, par défaut, le résultat de toutes les conditions doit être true. En d’autres termes, les conditions sont combinées à l’aide de l’opérateur `AND`. Vous pouvez également utiliser le paramètre [ConditionalOperator (héritage)](LegacyConditionalParameters.ConditionalOperator.md) pour dissocier les conditions à l’aide de l’opérateur logique OR (OU). Dans ce cas, au moins une des conditions doit avoir la valeur vrai, plutôt que toutes.

Notez que `QueryFilter` n’autorise pas les attributs de clé. Vous ne pouvez pas définir de condition de filtre sur une clé de partition ou une clé de tri.

Chaque élément `QueryFilter` se compose d’un nom d’attribut à comparer, ainsi que de ce qui suit :
+  `AttributeValueList` - Une ou plusieurs valeurs à évaluer par rapport à l’attribut fourni. Le nombre de valeurs dans la liste dépend de l’opérateur spécifié dans `ComparisonOperator`.

  Pour le type Nombre, les comparaisons de valeurs sont numériques.

  Les comparaisons de valeurs de chaîne pour supérieur, égal ou inférieur sont basées sur le codage binaire UTF-8. Par exemple, `a` est supérieur à `A`, et `a` est supérieur à `B`.

  Pour le type Binaire, DynamoDB traite chaque octet des données binaires comme non signé lors de la comparaison de valeurs binaires.

  Pour plus d’informations sur la spécification des types de données en JSON, consultez [API de bas niveau de DynamoDB](Programming.LowLevelAPI.md).
+  `ComparisonOperator` - Comparateur pour l’évaluation d’attributs. Par exemple : égal à, supérieur à, et inférieur à.

  Les opérateurs de comparaison pris en charge sont les suivants :

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

## Utiliser *FilterExpression*plutôt — Exemple
<a name="FilterExpression.instead"></a>

Supposons que vous vouliez interroger la table *Music* et appliquer une condition aux éléments correspondants. Vous pourriez utiliser une requête `Query` avec un paramètre `QueryFilter` comme dans cet exemple d’ 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"} ]
        }   
    }'
```

Vous pouvez utiliser `FilterExpression` à la place :

```
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"}
    }'
```