2017-09-25 4 views
0

J'ai une table et j'ai configuré un GSI pour faire une requête. l'attribut pour lequel je définis la condition est de type number. J'ai mis la valeur d'attribut pour la comparaison comme ceci: AttributeValue value = new AttributeValue(); value.setN (String.valueOf (3));DynamoDb "Condition de clé de requête non prise en charge"

Je réussis à faire une requête où le ComparisonOperator est réglé sur EQ. le résultat correct est donné mais aucune des autres options (NE | LE | LT | GE | GT | etc) ne fonctionne. ils ont tous jeter un ValidationException - condition clé de requête non prise en charge (Service: AmazonDynamoDB; Code d'état: 400; ...

ce que je fais mal

très apprécié

Répondre

1

Lorsque vous interrogez le GSI avec? Si vous ne connaissez pas la valeur de la clé de partition, vous devez utiliser l'API de numérisation:

L'API de requête permet d'utiliser d'autres opérateurs conditionnels pour l'attribut de clé de tri. vous ne pouvez utiliser que l'opérateur d'égalité pour la clé de partition, sinon vous ne pouvez pas utiliser l'API de requêteL'expression de filtre permet tous les types d'opérateurs conditionnels lorsque vous l'utilisez avec des attributs non-clés.

+0

merci. si seulement la documentation était plus claire .... –