根據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