

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.

# KeyConditions (héritage)
<a name="LegacyConditionalParameters.KeyConditions"></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 *KeyConditionExpression*plutôt.](#KeyConditionExpression.instead). 

Le paramètre conditionnel hérité `KeyConditions` contient des critères de sélection pour une opération `Query`. Pour une requête sur une table, vous ne pouvez avoir de conditions que sur les attributs de clé primaire de table. Vous devez fournir le nom et la valeur de la clé de partition comme condition `EQ`. Vous pouvez également fournir une deuxième condition pour la clé de tri.

**Note**  
Si vous ne fournissez pas de condition de clé de tri, tous les éléments correspondant à la clé de partition sont extraits. Si les paramètres `FilterExpression` ou un `QueryFilter` sont présents, ils sont appliqués une fois les éléments extraits.

Pour une requête sur un index, vous ne pouvez avoir de conditions que sur les attributs de clé d’index. Vous devez fournir le nom et la valeur de la clé de partition d’index comme condition `EQ`. Vous pouvez également fournir une deuxième condition pour la clé de tri d’index.

Chaque élément `KeyConditions` 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 `ComparisonOperator` utilisé.

  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 Unicode 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.
+  `ComparisonOperator` - Comparateur pour l’évaluation d’attributs. Par exemple : égal à, supérieur à, et inférieur à.

  Pour `KeyConditions`, seuls les opérateurs de comparaison suivants sont pris en charge :

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

  Voici une description de ces opérateurs de comparaison.
  +  `EQ` : égal. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne, Nombre ou Binaire (pas Ensemble). Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n’est pas égal à `{"N":"6"}`. De même, `{"N":"6"}` n’est pas égal à `{"NS":["6", "2", "1"]}`.
  +  `LE` : inférieur ou égal. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne, Nombre ou Binaire (pas Ensemble). Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n'est pas égal à `{"N":"6"}`. De même, `{"N":"6"}` n'est pas comparable à `{"NS":["6", "2", "1"]}`.
  +  `LT` : inférieur. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne, Nombre ou Binaire (pas Ensemble). Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n'est pas égal à `{"N":"6"}`. De même, `{"N":"6"}` ne se compare pas à `{"NS":["6", "2", "1"]}`.
  +  `GE` : supérieur ou égal. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne, Nombre ou Binaire (pas Ensemble). Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n'est pas égal à `{"N":"6"}`. De même, `{"N":"6"}` ne se compare pas à `{"NS":["6", "2", "1"]}`.
  +  `GT` : supérieur. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne, Nombre ou Binaire (pas Ensemble). Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n'est pas égal à `{"N":"6"}`. De même, `{"N":"6"}` n'est pas comparable à `{"NS":["6", "2", "1"]}`.
  +  `BEGINS_WITH` : vérifie la présence d’un préfixe. 

     `AttributeValueList` ne peut contenir qu’un seul élément `AttributeValue` de type Chaîne ou Binaire (pas Nombre ou Ensemble). L’attribut cible de la comparaison doit être de type Chaîne ou Binaire (pas Nombre ou Ensemble).
  +  `BETWEEN` : supérieur ou égal à la première valeur, et inférieur ou égal à la deuxième. 

     `AttributeValueList` doit contenir deux éléments `AttributeValue` du même type, Chaîne, Nombre ou Binaire (pas Ensemble). Un attribut cible correspond si la valeur cible est supérieure ou égale au premier élément, et inférieure ou égale au deuxième. Si une liste contient un élément `AttributeValue` d’un type différent de celui spécifié dans la demande, la valeur ne correspond pas. Par exemple, `{"S":"6"}` n’est pas comparable à `{"N":"6"}`. De même, `{"N":"6"}` n’est pas comparable à `{"NS":["6", "2", "1"]}`. 

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

Supposons que vous souhaitiez extraire plusieurs éléments avec la même clé de partition à partir de la table *Music*. Vous pouvez utiliser une `Query` requête avec un `KeyConditions` paramètre, comme dans cet AWS CLI exemple :

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

Vous pouvez utiliser `KeyConditionExpression` à la place :

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