Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

QueryFilter

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

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

注意

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

如果您在 QueryFilter 映射中提供多个条件,则默认情况下所有条件的计算结果都必须为 true。换言之,条件将通过 AND 连接在一起。 (您可使用 ConditionalOperator 参数,改为对条件使用 OR。如果这样做,则至少一个条件而不是所有条件的计算结果必须为 true。)

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

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

  • 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 表,并且在项目返回前对项目应用条件。您可使用带 QueryFilter 参数的 Query 请求,如此 AWS CLI 示例中所示:

Copy
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

Copy
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"} }'

本页内容: