dynamodb 过滤不在列表中的值

dynamodb filtering on values NOT IN a list

我正在尝试在 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 的错误消息告诉您的:您使用了错误的语法...。您应该参考亚马逊关于 FilterExpression 语法的文档 - 这里是正确位置的 link:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html

在您的情况下,没有运算符 "NOT IN"。但是你可以在整个条件上加上 "NOT",即 NOT address.#state IN (:s1, :s2, :s3, :s4).