QueryFilter - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

QueryFilter

Query 操作中,QueryFilter 是一个条件,它在读取项目后评估查询结果并且仅返回所需的值。

此参数不支持 List 或 Map 类型的属性。

注意

在读取项目后应用 QueryFilter;筛选过程不会消耗任何额外的读取容量单位。

如果您在 QueryFilter 映射中提供多个条件,则默认情况下,所有条件的计算结果都必须为 true。换句话说,条件是 ANDed 在一起的。(您可以使用 ConditionalOperator 参数来 OR 条件。 如果您执行此操作,则至少有一个条件的计算结果必须为 true,而不是所有条件。)

请注意,QueryFilter 不允许密钥属性。您无法在分区键或排序键上定义筛选条件。

每个 QueryFilter 元素都包含要比较的属性名称以及以下内容:

  • AttributeValueList - 根据提供的属性计算一个或多个值。列表中的值数量取决于 ComparisonOperator 中指定的运算符。

    对于类型数字,值比较是数字比较。

    大于、等于或小于的字符串值比较基于 UTF-8 二进制编码。例如,a 大于 Aa 大于 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"} }'