Expressions de filtre pour l’opération Query dans DynamoDB
Si vous avez besoin d’affiner davantage les résultats de l’opération Query, vous pouvez fournir une expression de filtre facultative. Une expression de filtre détermine les éléments dans les résultats de l’opération Query qui doivent vous être renvoyés. Tous les autres résultats sont ignorés.
Une expression de filtre est appliquée après la fin de l’opération Query, mais avant que les résultats soient renvoyés. Par conséquent, une opération Query utilise la même capacité de lecture, qu’une expression de filtre soit présente ou non.
Une opération Query peut extraire au maximum 1 Mo de données. Cette limite s’applique avant que l’expression de filtre soit évaluée.
Une expression de filtre ne peut pas contenir d’attributs de clé de partition ou de clé de tri. Vous devez préciser ces attributs dans l’expression de condition de clé, pas dans l’expression de filtre.
La syntaxe d’un expression de filtre est similaire à celle d’une expression de condition de clé. Les expressions de filtre peuvent utiliser les mêmes comparateurs, fonctions et opérateurs logiques qu’une expression de condition de clé. En outre, les expressions de filtre peuvent utiliser l’opérateur non égal (<>), l’opérateur OR, l’opérateur CONTAINS, l’opérateur IN, l’opérateur BEGINS_WITH, l’opérateur BETWEEN, l’opérateur EXISTS et l’opérateur SIZE. Pour en savoir plus, consultez Expressions de condition clé pour l’opération Query dans DynamoDB et Syntaxe des expressions de filtre et de condition.
Exemple
L’exemple AWS CLI suivant interroge la table Thread en quête d’un ForumName (clé de partition) particulier et d’un Subject (clé de tri). Parmi les éléments trouvés, seules les unités d’exécution de discussion les plus populaires sont renvoyés, c’est-à-dire les threads ayant plus qu’un certain nombre de Views.
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :fn and Subject begins_with :sub" \ --filter-expression "#v >= :num" \ --expression-attribute-names '{"#v": "Views"}' \ --expression-attribute-values file://values.json
Les arguments de la fonction --expression-attribute-values sont stockés dans le fichier values.json.
{ ":fn":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"}, ":num":{"N":"3"} }
Notez que Views étant un mot réservé dans DynamoDB (consultez Mots réservés dans DynamoDB), cet exemple utilise #v comme espace réservé. Pour en savoir plus, consultez Noms d’attributs d’expression (alias) dans DynamoDB.
Note
Une expression de filtre supprime des éléments du jeu de résultats de Query. Dans la mesure du possible, évitez d’utiliser Query lorsque vous pensez extraire un grand nombre d’éléments mais que vous devrez en supprimer une grande partie.