根据DynamoDB Query API Documentation:
查询:
查询操作使用表或次要索引 直接访问从该表或索引项的主键。
使用KeyConditionExpression参数为分区键提供特定值 。查询操作将使用该分区键值从表或索引中返回所有 项目。您可以通过在KeyConditionExpression中指定 排序键值和比较运算符来可选地缩小查询操作的范围。 可以使用ScanIndexForward参数按排序键以 或相反顺序获得结果。
KeyConditionExpression:
,用于指定项是在由查询动作检索 密钥值(一个或多个)条件。
该条件必须对单个分区键 的值执行相等性测试。该条件还可以对单个排序键值执行几个比较测试 中的一个。查询可以使用KeyConditionExpression来 检索具有给定分区键值和排序键值的一个项目, 或几个具有相同分区键值但不同 排序键值的项目。
分区键相等测试是必需的,而且必须在 以下格式指定:
partitionKeyName = :partitionkeyval
如果您也想为排序键的条件,则必须使用是 合并以及排序键的条件。以下是 一个例子,使用=比较运算符排序键:
partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval
有效的比较用于排序关键条件如下:
sortKeyName = :sortkeyval
- 如果排序键值真等于:sortkeyval。
sortKeyName < :sortkeyval
- 如果排序键值小于:sortkeyval,则为true。
sortKeyName <= :sortkeyval
- 如果排序关键字值小于或等于:sortkeyval,则返回true。
sortKeyName > :sortkeyval
- 如果排序关键值大于:sortkeyval,则为true。
sortKeyName >= :sortkeyval
- 如果排序关键字值大于或等于:sortkeyval,则返回true。
sortKeyName BETWEEN :sortkeyval1 AND :sortkeyval2
- 如果排序关键字值大于或等于:sortkeyval1且小于 或等于sortkeyval2,则为true。
begins_with (sortKeyName, :sortkeyval)
- 如果排序键值以特定操作数开头,则返回true。 (您不能使用此功能 以及Number类型的排序键。)
您可以选择使用ExpressionAttributeNames参数 替换分区键的名称和与占位 令牌排序键。如果属性名称与DynamoDB保留字冲突 ,则可能需要此选项。例如,下面的 KeyConditionExpression参数将导致错误,因为尺寸是 保留字:
Size = :myval
为了解决这个问题,定义一个占位符(例如一个#S)来表示 属性名大小。 KeyConditionExpression则如下:
#S = :myval
对于保留字的列表,请参阅保留字亚马逊 DynamoDB开发者指南中。
有关ExpressionAttributeNames和 ExpressionAttributeValues的更多信息,请参阅Amazon DynamoDB开发人员指南中的使用属性名称的占位符 和值。
类型:String
要求:无
您的情况可以转换为下面的代码:
$tableName = "genericTable";
$response = $dynamodb->query([
'TableName' => $tableName,
'IndexName' => 'OrderCreationDateIndex',
'KeyConditionExpression' => 'partitionKeyName = :partitionkeyval AND sortKeyName = :sortkeyval',
'ExpressionAttributeValues' => [
':partitionkeyval' => ['S' => 'pkey'],
':sortkeyval' => ['S' => 'sortkey']
],
'Select' => 'ALL_PROJECTED_ATTRIBUTES',
'ScanIndexForward' => false,
'ConsistentRead' => true,
'Limit' => 5,
'ReturnConsumedCapacity' => 'TOTAL'
]);
让我们讨论上[聊天室](HTTP相同:/ /chat.stackoverflow.com/rooms/138204/chat-between-tj-and-thearrow) – LuFFy