本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
QueryFilter
在 Query
操作中,QueryFilter
是一个条件,它在读取项目后评估查询结果并且仅返回所需的值。
此参数不支持 List 或 Map 类型的属性。
在读取项目后应用 QueryFilter
;筛选过程不会消耗任何额外的读取容量单位。
如果您在 QueryFilter
映射中提供多个条件,则默认情况下,所有条件的计算结果都必须为 true。换句话说,条件是 ANDed 在一起的。(您可以使用 ConditionalOperator 参数来 OR 条件。 如果您执行此操作,则至少有一个条件的计算结果必须为 true,而不是所有条件。)
请注意,QueryFilter
不允许密钥属性。您无法在分区键或排序键上定义筛选条件。
每个 QueryFilter
元素都包含要比较的属性名称以及以下内容:
-
AttributeValueList
- 根据提供的属性计算一个或多个值。列表中的值数量取决于ComparisonOperator
中指定的运算符。对于类型数字,值比较是数字比较。
大于、等于或小于的字符串值比较基于 UTF-8 二进制编码。例如,
a
大于A
,a
大于B
。对于二进制类型,DynamoDB 在比较二进制值时将二进制数据的每个字节视为无符号。
有关在 JSON 中指定数据类型的信息,请参阅DynamoDB 低级 API。
-
ComparisonOperator
- 一个用于评估属性的比较器。例如,等于、大于、小于等。提供了以下比较运算符:
EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN
使用 FilterExpression 而不是
假设您要查询 Music 表并对匹配的项目应用条件。您可以将 Query
请求与 QueryFilter
参数结合使用,如以下 AWS CLI 示例所示:
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist": { "ComparisonOperator": "EQ", "AttributeValueList": [ {"S": "No One You Know"} ] } }' \ --query-filter '{ "Price": { "ComparisonOperator": "GT", "AttributeValueList": [ {"N": "1.00"} ] } }'
但您可以使用 FilterExpression
:
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a' \ --filter-expression 'Price > :p' \ --expression-attribute-values '{ ":p": {"N":"1.00"}, ":a": {"S":"No One You Know"} }'