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.
Exemple de commande CLI d’expression de condition DynamoDB
Voici quelques AWS Command Line Interface (AWS CLI) exemples d'utilisation d'expressions de condition. Ces exemples sont basés sur la table ProductCatalog, qui a été présentée dans Référencement d’attributs d’élément lors de l’utilisation d’expressions dans DynamoDB. La clé de partition de cette table est Id ; il n’y a aucune clé de tri. L’opération PutItem suivante crée un exemple d’élément ProductCatalog auquel nous ferons référence dans les exemples.
aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json
Les arguments de la fonction --item sont stockés dans le fichier item.json. Dans un souci de simplicité, seuls quelques attributs sont utilisés.
{ "Id": {"N": "456" }, "ProductCategory": {"S": "Sporting Goods" }, "Price": {"N": "650" } }
Rubriques
Insertion conditionnelle
L’opération PutItem remplace un élément avec la même clé primaire (le cas échéant). Vous pouvez éviter cela à l’aide d’une expression de condition. Elle permet la poursuite de l’écriture seulement si l’élément en question ne possède pas déjà la même clé primaire.
L'exemple suivant permet attribute_not_exists() de vérifier si un élément avec la même clé primaire existe déjà avant de tenter l'écriture. DynamoDB évalue une expression de condition lors d'une opération d'écriture par rapport à l'élément identifié par la clé de la demande. Il n'attribute_not_exists(Id)est donc vrai que lorsqu'aucun élément ayant cette Id valeur n'existe déjà. Lorsque c'est vrai, l'écriture se poursuit ; lorsqu'un élément comportant cette clé existe déjà, la condition est fausse et DynamoDB rejette l'écriture, ce qui empêche toute réécriture.
Note
Pour une table avec une clé primaire composite (une clé de partition et une clé de tri), DynamoDB évalue toujours la condition par rapport à l'élément unique identifié par les deux valeurs de clé. attribute_not_exists()Le test sur un attribut clé, par exemple, n'attribute_not_exists(pk)est vrai que lorsqu'aucun élément ne possède déjà cette clé de partition et cette clé de tri, afin d'éviter de remplacer cet élément.
aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json \ --condition-expression "attribute_not_exists(Id)"
Si l’expression de condition prend la valeur false, DynamoDB renvoie le message d’erreur suivant : The conditional request failed (Échec de la demande conditionnelle).
Note
Pour en savoir plus sur attribute_not_exists et d’autres fonctions, consultez Expressions de condition et de filtre, opérateurs et fonctions dans DynamoDB.
Suppressions conditionnelles
Effectuez une suppression conditionnelle à l’aide d’une opération DeleteItem avec une expression de condition. L’expression de condition doit avoir la valeur true afin que l’opération aboutisse. Dans le cas contraire, l’opération échoue.
Tenez compte de l’élément défini ci-dessus.
Supposons maintenant que vous souhaitiez supprimer l’élément, mais uniquement dans les conditions suivantes :
-
L’attribut
ProductCategoryest soit « Sporting Goods » (Matériels de sport), soit « Gardening Supplies » (Articles de jardinerie). -
La valeur de l’attribut
Priceest comprise entre 500 et 600.
L’exemple suivant tente de supprimer l’élément.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"456"}}' \ --condition-expression "(ProductCategory IN (:cat1, :cat2)) and (Price between :lo and :hi)" \ --expression-attribute-values file://values.json
Les arguments de la fonction --expression-attribute-values sont stockés dans le fichier values.json.
{ ":cat1": {"S": "Sporting Goods"}, ":cat2": {"S": "Gardening Supplies"}, ":lo": {"N": "500"}, ":hi": {"N": "600"} }
Note
Dans l’expression de condition, le signe : (deux points) indique une valeur d’attribut d’expression, c’est-à-dire un espace réservé pour une valeur réelle. Pour de plus amples informations, veuillez consulter Utilisation de valeurs d’attributs d’expression dans DynamoDB.
Pour en savoir plus sur IN, AND et d’autres mots clés, consultez Expressions de condition et de filtre, opérateurs et fonctions dans DynamoDB.
Dans cet exemple, la comparaison ProductCategory a la valeur true, mais la comparaison Price a la valeur false. Par conséquent, l’expression de condition prend la valeur false et l’opération DeleteItem échoue.
Mises à jour conditionnelles
Effectuez une mise à jour conditionnelle à l’aide d’une opération UpdateItem avec une expression de condition. L’expression de condition doit avoir la valeur true afin que l’opération aboutisse. Dans le cas contraire, l’opération échoue.
Note
UpdateItem prend également en charge les expressions de mise à jour, dans lesquelles vous spécifiez les modifications à apporter à un élément. Pour de plus amples informations, veuillez consulter Utilisation d’expressions de mise à jour dans DynamoDB.
Supposons que vous commenciez avec l’élément défini ci-dessus.
L’exemple suivant effectue une opération UpdateItem. Elle tente de réduire la valeur de l’attribut Price d’un produit de 75, mais l’expression de condition empêche la mise à jour si la valeur actuelle de l’attribut Price est inférieure à 500.
aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --update-expression "SET Price = Price - :discount" \ --condition-expression "Price > :limit" \ --expression-attribute-values file://values.json
Les arguments de la fonction --expression-attribute-values sont stockés dans le fichier values.json.
{ ":discount": { "N": "75"}, ":limit": {"N": "500"} }
Si la valeur de départ de l’attribut Price est 650, l’opération UpdateItem réduit la valeur de l’attribut Price à 575. Si vous réexécutez l’opération UpdateItem, la valeur de l’attribut Price est réduite à 500. Si vous l’exécutez une troisième fois, l’expression de condition prend la valeur false et l’opération de mise à jour échoue.
Note
Dans l’expression de condition, le signe : (deux points) indique une valeur d’attribut d’expression, c’est-à-dire un espace réservé pour une valeur réelle. Pour de plus amples informations, veuillez consulter Utilisation de valeurs d’attributs d’expression dans DynamoDB.
Pour en savoir plus sur « > » et d’autres opérateurs, consultez Expressions de condition et de filtre, opérateurs et fonctions dans DynamoDB.
Exemples d’expressions conditionnelles
Pour en savoir plus sur les fonctions utilisées dans les exemples suivants, consultez Expressions de condition et de filtre, opérateurs et fonctions dans DynamoDB. Pour en savoir plus sur la spécification de différents types d’attributs dans une expression, consultez Référencement d’attributs d’élément lors de l’utilisation d’expressions dans DynamoDB.
Vérification des attributs d’un élément
Vous pouvez vérifier l’existence (ou la non-existence) d’un attribut. Si l’expression de condition a la valeur true, l’opération aboutit. Dans le cas contraire, l’opération échoue.
L’exemple suivant supprime un produit seulement s’il ne possède pas d’attribut Price à l’aide de attribute_not_exists.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_not_exists(Price)"
DynamoDB fournit également une fonction attribute_exists. L’exemple suivant supprime un produit seulement si les commentaires le concernant sont négatifs.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_exists(ProductReviews.OneStar)"
Vérification du type d’attribut
Vous pouvez vérifier le type de données d’une valeur d’attribut à l’aide de la fonction attribute_type. Si l’expression de condition a la valeur true, l’opération aboutit. Dans le cas contraire, l’opération échoue.
L’exemple suivant supprime un produit seulement s’il possède un attribut Color de type String Set à l’aide de attribute_type.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "attribute_type(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Les arguments pour --expression-attribute-values sont stockés dans le fichier expression-attribute-values.json.
{ ":v_sub":{"S":"SS"} }
Vérification de la valeur de début de la chaîne
Vous pouvez vérifier si une valeur d’attribut String commence par une sous-chaîne spécifique à l’aide de la fonction begins_with. Si l’expression de condition a la valeur true, l’opération aboutit. Dans le cas contraire, l’opération échoue.
L’exemple suivant supprime un produit seulement si l’élément FrontView de la carte Pictures commence par une valeur spécifique à l’aide de begins_with.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "begins_with(Pictures.FrontView, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Les arguments pour --expression-attribute-values sont stockés dans le fichier expression-attribute-values.json.
{ ":v_sub":{"S":"http://"} }
Recherche d’un élément dans un ensemble
Vous pouvez rechercher un élément dans un ensemble ou rechercher une sous-chaîne dans une chaîne à l’aide de la fonction contains. Si l’expression de condition a la valeur true, l’opération aboutit. Dans le cas contraire, l’opération échoue.
L’exemple suivant supprime un produit seulement si l’attribut de type String Set Color comporte un élément avec une valeur spécifique à l’aide de contains.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "contains(Color, :v_sub)" \ --expression-attribute-values file://expression-attribute-values.json
Les arguments pour --expression-attribute-values sont stockés dans le fichier expression-attribute-values.json.
{ ":v_sub":{"S":"Red"} }
Vérification de la taille d’une valeur d’attribut
Vous pouvez vérifier la taille d’une valeur d’attribut à l’aide de la fonction size. Si l’expression de condition a la valeur true, l’opération aboutit. Dans le cas contraire, l’opération échoue.
L’exemple suivant supprime un produit seulement si la taille du binary attribute VideoClip est supérieure à 64000 octets à l’aide de size.
aws dynamodb delete-item \ --table-name ProductCatalog \ --key '{"Id": {"N": "456"}}' \ --condition-expression "size(VideoClip) > :v_sub" \ --expression-attribute-values file://expression-attribute-values.json
Les arguments pour --expression-attribute-values sont stockés dans le fichier expression-attribute-values.json.
{ ":v_sub":{"N":"64000"} }