ScanFilter(遗留)
注意
我们建议您尽可能使用新的表达式参数,而不是这些旧式参数。有关更多信息,请参阅 在 DynamoDB 中使用表达式。有关取代此参数的新参数的具体信息,请参阅改用 FilterExpression。。
在 Scan
操作中,遗留条件参数 ScanFilter
是计算扫描结果的条件,仅返回所需值。
注意
此参数不支持 List 或 Map 类型的属性。
如果在 ScanFilter
映射中指定多个条件,则默认所有条件的计算结果都必须为 true。换句话说,条件 AND 在一起。(可以使用 ConditionalOperator(遗留) 参数设置为 OR 条件。如果这样做,则必须至少有一个条件的计算结果为 true,而不是所有条件都必须。)
每个 ScanFilter
元素包含要比较的属性名称以及以下内容:
-
AttributeValueList
- 对提供的属性计算的一个或多个值。列表中的值数量取决于ComparisonOperator
中指定的运算符。对于 Number 类型,值比较为数字。
大于、等于或小于的字符串值比较基于 UTF-8 二进制编码。例如,
a
大于A
,a
大于B
。对于 Binary,DynamoDB 比较二进制值时将二进制数据的每个字节视为无符号。
有关在 JSON 中指定数据类型的信息,请参阅 DynamoDB 低级 API。
-
ComparisonOperator
- 用于计算属性的比较运算符。例如:等于、大于、小于等。支持下列比较运算符:
EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN
改用 FilterExpression– 示例
假设要扫描 Music 表并对匹配项目应用条件。可以使用 Scan
请求和 ScanFilter
参数,如这个 Amazon CLI 示例:
aws dynamodb scan \ --table-name Music \ --scan-filter '{ "Genre":{ "AttributeValueList":[ {"S":"Rock"} ], "ComparisonOperator": "EQ" } }'
您可以改用 FilterExpression
:
aws dynamodb scan \ --table-name Music \ --filter-expression 'Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'