DynamoDB utilise l'évaluation logique dans l'expression de condition de clé

Sep 06 2020

Est-il possible dans DynamoDB d'utiliser une évaluation logique sur la clé de tri dans une expression de condition de clé?

Par exemple, sur une table avec la clé de partition 'department' et la clé de tri 'user', est-il possible de créer une expression de condition de clé sur une requête qui ressemble à:

department eq ‘finance’ and (user eq ‘123’ OR user eq ‘321’)

Réponses

NadavHar'El Sep 06 2020 at 14:01

Oui, il est tout à fait possible de vérifier les clés dans les expressions de condition.

Mais votre exemple n'a pas la bonne syntaxe. Quelques commentaires sur la syntaxe:

  1. Dans DynamoDB, les constantes (comme «finance» ou 123) ne font jamais partie de l'expression, mais sont données dans un paramètre séparé ExpressionAttributeValues, et chaque constante est référencée dans l'expression par son nom, par exemple., :val. Le raisonnement est que DynamoDB a déjà un moyen d'encoder des constantes de différents types dans JSON, il n'y avait aucune raison d'inventer un autre moyen d'encoder ces constantes à l'intérieur de l'expression.
  2. Certains noms d'attributs sont également réservés dans les expressions, vous pouvez donc également utiliser ExpressionAttributeNameset faire référence à ces noms comme #name. Vous n'êtes pas obligé de le faire si les noms que vous avez choisis ne font pas partie des noms réservés.
  3. L'opérateur d'égalité ne l'est =pas eq.