KeyConditions(遗留)
注意
我们建议您尽可能使用新的表达式参数,而不是这些旧式参数。有关更多信息,请参阅 在 DynamoDB 中使用表达式。有关取代此参数的新参数的具体信息,请参阅改用 KeyConditionExpression。。
遗留条件参数 KeyConditions
包含 Query
操作的选择标准。对于表的查询,只能对表主键属性设置条件。必须提供分区键名称和值作为 EQ
条件。可以选择提供排序键作为另一个条件。
注意
如果不提供排序键条件,则将检索与分区键匹配的所有项目。如果存在 FilterExpression
或 QueryFilter
,将在检索项目后应用。
对于索引查询,只能对索引键属性设置条件。必须提供索引键名称和值作为 EQ
条件。可以选择提供索引排序键作为另一个条件。
每个 KeyConditions
元素包含要比较的属性名称以及以下内容:
-
AttributeValueList
- 对提供的属性计算的一个或多个值。列表中的值取决于使用的ComparisonOperator
。对于 Number 类型,值比较为数字。
大于、等于或小于的字符串值比较基于 UTF-8 二进制编码的 Unicode。例如,
a
大于A
,a
大于B
。对于 Binary,DynamoDB 比较二进制值时将二进制数据的每个字节视为无符号。
-
ComparisonOperator
- 用于计算属性的比较运算符。例如:等于、大于、小于等。对于
KeyConditions
,支持下列比较运算符:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
下面介绍每个比较运算符。
-
EQ
:等于。AttributeValueList
只能包含一个 String、Number 或 Binary(不是集合类型)的AttributeValue
。如果项目包含的AttributeValue
元素类型与请求中指定的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。 -
LE
:小于或等于。AttributeValueList
只能包含一个 String、Number 或 Binary(不是集合类型)的AttributeValue
元素。如果项目包含的AttributeValue
元素类型与请求提供的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。 -
LT
:小于。AttributeValueList
只能包含一个 String、Number 或 Binary(不是集合类型)的AttributeValue
。如果项目包含的AttributeValue
元素类型与请求提供的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。 -
GE
:大于或等于。AttributeValueList
只能包含一个 String、Number 或 Binary(不是集合类型)的AttributeValue
元素。如果项目包含的AttributeValue
元素类型与请求提供的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。 -
GT
:大于。AttributeValueList
只能包含一个 String、Number 或 Binary(不是集合类型)的AttributeValue
元素。如果项目包含的AttributeValue
元素类型与请求提供的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。 -
BEGINS_WITH
:检查前缀。AttributeValueList
只能包含一个 String 或 Binary(不是 Number 或集合类型)的AttributeValue
。比较的目标属性必须是 String 或 Binary 类型(不是 Number 或集合类型)。 -
BETWEEN
:大于或等于第一个值,小于或等于第二个值。AttributeValueList
必须包含两个相同类型的AttributeValue
元素,可以是 String、Number 或 Binary(不是集合类型)。如果目标值大于等于第一个元素,小于等于第二个元素,则目标属性匹配。如果项目包含的AttributeValue
元素类型与请求提供的类型不同,则值不匹配。例如,{"S":"6"}
不等于{"N":"6"}
。{"N":"6"}
不等于{"NS":["6", "2", "1"]}
。
-
改用 KeyConditionExpression– 示例
假设要用相同分区键从 Music 表检索多个项目。可以使用 Query
请求和 KeyConditions
参数,如这个 AWS CLI 示例:
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist":{ "ComparisonOperator":"EQ", "AttributeValueList": [ {"S": "No One You Know"} ] }, "SongTitle":{ "ComparisonOperator":"BETWEEN", "AttributeValueList": [ {"S": "A"}, {"S": "M"} ] } }'
您可以改用 KeyConditionExpression
:
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \ --expression-attribute-values '{ ":a": {"S": "No One You Know"}, ":t1": {"S": "A"}, ":t2": {"S": "M"} }'