我正在尝试在 dynamodb 扫描过滤器上使用 NOT 运算符
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"
最佳答案
您的问题正是 DynamoDB 的错误消息告诉您的:您使用了错误的语法...您应该引用 Amazon 关于 FilterExpression 语法的文档 - 这里是正确位置的链接:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html
在您的情况下,没有运算符“NOT IN”。但您可以在整个条件上添加“NOT”,即 NOT address.#state IN (:s1, :s2, :s3, :s4)
。
关于amazon-dynamodb - dynamodb 对不在列表中的值进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60402960/