查询操作的筛选表达式 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

查询操作的筛选表达式

如果您需要进一步细化 Query 结果,则可以选择性地提供筛选表达式。筛选表达式可确定 Query 结果中应返回给您的项目。所有其他结果将会丢弃。

筛选表达式在 Query 已完成但结果尚未返回时应用。因此,无论是否存在筛选表达式,Query 都将占用同等数量的读取容量。

Query 操作最多可检索 1 MB 的数据。此限制在计算筛选表达式之前应用。

筛选表达式不得包含分区键或排序键属性。您需要在关键字条件表达式而不是筛选表达式中指定这些属性。

筛选表达式的语法与关键条件表达式的语法相似。筛选表达式可使用的比较运算符、函数和逻辑运算符与关键条件表达式可使用的相同。此外,筛选表达式可以使用不等于运算符 (<>)、OR 运算符、CONTAINS 运算符、IN 运算符、BEGINS_WITH 运算符、BETWEEN 运算符、EXISTS 运算符和 SIZE 运算符。有关更多信息,请参阅 查询操作的键条件表达式筛选条件和条件表达式的语法

以下 Amazon CLI 示例在 Thread 表中查询特定 ForumName(分区键)和 Subject(排序键)。在找到的项目中,只返回最常用的讨论线程,换句话说,只有那些具有超过一定数量 Views 的线程。

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :fn and Subject = :sub" \ --filter-expression "#v >= :num" \ --expression-attribute-names '{"#v": "Views"}' \ --expression-attribute-values file://values.json

--expression-attribute-values 的参数存储在文件 values.json 中。

{ ":fn":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"}, ":num":{"N":"3"} }

请注意,Views 在 DynamoDB 中是一个保留字(请参阅 DynamoDB 中的保留字),因此本示例使用 #v 作为占位符。有关更多信息,请参阅 DynamoDB 中的表达式属性名称

注意

筛选表达式将从 Query 结果集中删除项目。在您预计会检索到大量项目并且还需要丢弃其中大多数项目的情况下,请尽量避免使用 Query