фильтрация DynamodB по значениям, НЕ входящим в список - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь использовать оператор NOT для фильтра сканирования DynamodB

aws dynamodb scan --table-name dev-users \
--select SPECIFIC_ATTRIBUTES \
--projection-expression id \
--filter-expression "address.#state IN (:s1, :s2, :s3, :s4)" \
--expression-attribute-names '{"#state": "state"}' \
--expression-attribute-values '{ ":s1": { "S": "ND" }, ":s2": { "S": "CA" }, ":s3": { "S": "IL" }, ":s4": { "S": "VT" } }'

Однако это не работает. IN само по себе работает. Чего мне не хватает?

An error occurred (ValidationException) when calling the Scan operation: Invalid FilterExpression: Syntax error; token: "NOT", near: "#state NOT IN"

1 Ответ

0 голосов
/ 26 февраля 2020

Ваша проблема именно в том, что сообщило вам сообщение об ошибке DynamoDB: вы используете неправильный синтаксис .... Вы должны обратиться к документации Amazon по поводу синтаксиса FilterExpression - вот ссылка на нужное место: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html

В вашем случае нет оператора «НЕ В». Но вы можете поставить «НЕ» на все условие, т.е. NOT address.#state IN (:s1, :s2, :s3, :s4).

...