Référence concernant les opérateurs et fonctions de comparaison - 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.

Référence concernant les opérateurs et fonctions de comparaison

Cette section traite des fonctions et mots-clés intégrés pour l'écriture des expressions de filtre et de condition dans Amazon DynamoDB. Pour obtenir des informations plus détaillées sur les fonctions et la programmation avec DynamoDB, consultez Programmation avec DynamoDB et les kits de développement logiciel AWS et le guide de référence de l'API DynamoDB.

Syntaxe des expressions de filtre et de condition

Dans le résumé de syntaxe suivant, un opérande peut avoir l'une des valeurs suivantes :

  • Nom d'attribut de niveau supérieur, tel que Id, Title, Description ou ProductCategory

  • Chemin d'accès du document qui fait référence à un attribut imbriqué

condition-expression ::= operand comparator operand | operand BETWEEN operand AND operand | operand IN ( operand (',' operand (, ...) )) | function | condition AND condition | condition OR condition | NOT condition | ( condition ) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path) | attribute_not_exists (path) | attribute_type (path, type) | begins_with (path, substr) | contains (path, operand) | size (path)

Comparaisons

Utilisez ces comparateurs pour comparer un opérande par rapport à une plage de valeurs, ou une liste énumérée de valeurs :

  • a = b – True si a est égal à b

  • a <> b – True si a n'est pas égal à 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.

Utilisez les mots clés BETWEEN et IN pour comparer un opérande par rapport à une plage de valeurs, ou une liste énumérée de valeurs.

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

  • a IN (b, c, d) – True si a est égal à n'importe quelle valeur figurant dans la liste, par exemple, b, c ou d. La liste peut contenir jusqu'à 100 valeurs séparées par des virgules.

Fonctions

Utilisez les fonctions suivantes pour déterminer si un attribut existe dans un élément, ou pour évaluer la valeur d'un attribut. Ces noms sont sensibles à la casse. Pour un attribut imbriqué, vous devez fournir le chemin d'accès au document complet.

Fonction Description

attribute_exists (path)

True si l'élément contienne l'attribut spécifié par path.

Exemple : Vérifier si un élément de la table Product a une image de vue de côté.

  • attribute_exists (#Pictures.#SideView)

attribute_not_exists (path)

True si l'attribut spécifié par path n'existe pas dans l'élément.

Exemple : Vérifier si un élément possède un attribut Manufacturer.

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

True si l'attribut à l'emplacement spécifié est d'un type de données particulier. Le paramètre type doit avoir l'une des valeurs suivantes :

  • S – String (chaîne)

  • SS – String set (ensemble de chaînes)

  • N – Number (nombre)

  • NS – Number set (ensemble de nombres)

  • B – Binary (binaire)

  • BS – Binary set (ensemble de binaires)

  • BOOL – Boolean (booléen)

  • NULL – Null

  • L – List (liste)

  • M – Map (mappage)

Vous devez utiliser une valeur d'attribut expression pour le paramètre type.

Exemple : Vérifier si l'attribut QuantityOnHand est de type List (liste). Dans cet exemple, :v_sub est un espace réservé pour la chaîne L.

  • attribute_type (ProductReviews.FiveStar, :v_sub)

Vous devez utiliser une valeur d'attribut expression pour le paramètre type.

begins_with (path, substr)

True si l'attribut spécifié par path commence par une sous-chaîne particulière.

Exemple : Vérifier si les tout premiers caractères de l'URL de l'image vue avant sont http://.

  • begins_with (Pictures.FrontView, :v_sub)

La valeur d'attribut expression :v_sub est un espace réservé pour http://.

contains (path, operand)

True si l'attribut spécifié par path est l'un des attributs suivants :

  • Une String qui contient une sous-chaîne particulière.

  • Un Set qui contient un élément particulier au sein de l'ensemble.

  • Une List qui contient un élément particulier.

Si l'attribut spécifié par path est de type String, operand doit être de type String. Si l'attribut spécifié par path est un Set, l'operand doit être le type d'élément de l'ensemble.

Le chemin et l'opérande doivent être distincts. Autrement dit, contains (a, a) renvoie une erreur.

Exemple : Vérifier si l'attribut Brand contient la sous-chaîne Company.

  • contains (Brand, :v_sub)

La valeur d'attribut expression :v_sub est un espace réservé pour Company.

Exemple : Vérifier si le produit est disponible en rouge.

  • contains (Color, :v_sub)

La valeur d'attribut expression :v_sub est un espace réservé pour Red.

size (path)

Renvoie un nombre qui représente la taille d'un attribut. Voici les types de données valides à utiliser avec size.

Si l'attribut est de type String, size retourne la longueur de la chaîne.

Exemple : Vérifier si la chaîne Brand est inférieure ou égale à 20 caractères. La valeur d'attribut expression :v_sub est un espace réservé pour 20.

  • size (Brand) <= :v_sub

Si l'attribut est de type Binary, size renvoie le nombre d'octets de la valeur d'attribut.

Exemple : supposez que l'élément ProductCatalog comporte un binary attribute nommé VideoClip qui contient une courte vidéo du produit utilisé. L'expression suivante vérifie si VideoClip dépasse 64 000 octets. La valeur d'attribut expression :v_sub est un espace réservé pour 64000.

  • size(VideoClip) > :v_sub

Si l'attribut est un type de données Set, size retourne le nombre d'éléments dans l'ensemble.

Exemple : Vérifier si le produit est disponible dans plusieurs couleurs. La valeur d'attribut expression :v_sub est un espace réservé pour 1.

  • size (Color) < :v_sub

Si l'attribut est de type List ou Map, size retourne le nombre d'éléments enfants.

Exemple : Vérifier si le nombre de révisions OneStar a dépassé un certain seuil. La valeur d'attribut expression :v_sub est un espace réservé pour 3.

  • size(ProductReviews.OneStar) > :v_sub

Evaluations logiques

Utilisez les mots clés AND, OR et NOT pour effectuer les évaluations logiques. Dans la liste suivante, a et b représentent les conditions à évaluer.

  • a AND b – True si a et b ont tous deux la valeur true.

  • a OR b – True si a ou b (ou les deux) ont la valeur true.

  • NOT a – True si a a la valeur false. False si a a la valeur true.

Voici un exemple de code avec AND dans une opération.

dynamodb-local (*)> select * from exprtest where a > 3 and a < 5;

Parenthèses

Utilisez les parenthèses pour modifier la priorité d'une évaluation logique. Par exemple, supposons que les conditions a et b sont true, et que cette condition c a la valeur false. L'expression suivante a la valeur true :

  • a OR b AND c

Toutefois, si vous placez une condition entre parenthèses, elle est évaluée en premier. Par exemple, l'expression suivante a la valeur false :

  • (a OR b) AND c

Note

Vous pouvez imbriquer les parenthèses dans une expression. Les parenthèses les plus intérieures sont évaluées en premier.

Voici un exemple de code avec des parenthèses dans une évaluation logique.

dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or ( a = 5 and c = “coffee”);

Priorité des conditions

DynamoDB évalue les conditions de gauche à droite en suivant les règles de priorité suivantes :

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • Parenthèses

  • NOT

  • AND

  • OR