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

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

ScanFilter

Scan 操作中,ScanFilter 是评估扫描结果并仅返回所需值的条件。

注意

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

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

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

  • 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 表并向匹配项目应用条件。您可以将 Scan 请求与 ScanFilter 参数结合使用,如以下 AWS 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"} }'