Expressions de condition clé pour l'opération Query - 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.

Expressions de condition clé pour l'opération Query

Pour spécifier les critères de recherche, vous utilisez une expression de condition de clé, c'est-à-dire une chaîne qui détermine les éléments à lire dans la table ou l'index.

Vous devez spécifier le nom de la clé de partition et la valeur comme condition d'égalité. Vous ne pouvez pas utiliser d'attribut non-clé dans une expression de condition clé.

Le cas échéant, vous pouvez fournir une deuxième condition pour la clé de tri (si elle est présente). La condition de la clé de tri doit être l'un des opérateurs de comparaison suivants :

  • a = b – True si l'attribut a est égal à la valeur b.

  • a < b – True si a est inférieur à b.

  • a <= b – True si a est inférieur ou égal à b.

  • a > b – True si a est supérieur à b.

  • a >= b – True si a est supérieur ou égal à b.

  • a BETWEEN b AND c – True si a est supérieur ou égal à b, et inférieur ou égal à c.

La fonction suivante est également prise en charge :

  • begins_with (a, substr) – True si la valeur de l'attribut a commence par une sous-chaîne particulière.

Les exemples suivants AWS Command Line Interface (AWS CLI) illustrent l'utilisation d'expressions de conditions clés. Ces expressions utilisent des espaces réservés (tels que :name et :sub) au lieu de valeurs réelles. Pour plus d’informations, consultez Noms d'attributs d'expression dans DynamoDB et Valeurs d'attributs d'expressions.

Exemple

Interrogez la table Thread pour un ForumName (clé de partition) particulier. Tous les éléments ayant cette valeur ForumName sont lus par la requête, car la clé de tri (Subject) n'est pas incluse dans KeyConditionExpression.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
Exemple

Interrogez la table Thread en quête d'un ForumName (clé de partition) particulier, mais cette fois ne retournez que les éléments avec un Subject (clé de tri) donné.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json

Les arguments de la fonction --expression-attribute-values sont stockés dans le fichier values.json.

{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }
Exemple

Interrogez la table Reply en quête d'un Id (clé de partition) particulier, mais retournez uniquement les éléments dont ReplyDateTime (clé de tri) commence par certains caractères.

aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json

Les arguments de la fonction --expression-attribute-values sont stockés dans le fichier values.json.

{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }

Vous pouvez utiliser n'importe quel nom dans une expression de condition de clé, sous réserve que le premier caractère soit a-z ou A-Z et que les autres caractères (à compter du deuxième caractère s'il y en a un) soit a-z, A-Z ou 0-9. En outre, le nom d'attribut ne doit pas être un mot réservé DynamoDB. (Pour en obtenir la liste complète, consultez Mots réservés dans DynamoDB.) Si un nom d'attribut ne répond pas à ces exigences, vous devez définir un nom d'attribut d'expression comme espace réservé. Pour de plus amples informations, veuillez consulter Noms d'attributs d'expression dans DynamoDB.

Pour les éléments avec une valeur de clé de partition donnée, DynamoDB stocke ces éléments proches les uns des autres, triés par valeur de clé de tri. Dans une opération Query, DynamoDB récupère les éléments en ordre trié, puis traite les éléments à l'aide d'une KeyConditionExpression et d'une FilterExpression éventuellement présente. Alors seulement les résultats de Query sont renvoyés au client.

Une opération Query retourne toujours un ensemble de résultats. Si aucun élément correspondant n'est trouvé, le jeu de résultats est vide.

Les résultats de Query sont toujours triés sur la valeur de la clé de tri. Si le type de données de la clé de tri est Number, les résultats sont retournés par ordre numérique. Sinon, les résultats sont retournés dans l'ordre des octets UTF-8. Par défaut, l'ordre de tri est croissant. Pour inverser l'ordre, définissez le paramètre ScanIndexForward sur false.

Une seule opération Query peut extraire au maximum 1 Mo de données. Cette limite s'applique avant qu'une FilterExpression ou ProjectionExpression ne soit appliquée aux résultats. Si LastEvaluatedKey est présent dans la réponse et n'a pas la valeur null, vous devez paginer le jeu de résultats (voir Pagination des résultats de requête de table).