KeyConditions (héritage) - Amazon DynamoDB

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)

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. Pour obtenir des informations précises sur le nouveau paramètre qui remplace celui-ci, utilisez KeyConditionExpressionplutôt..

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 supérieures, égales ou inférieures à 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 à KeyConditionExpressionla place — Exemple

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