DynamoDB でのクエリオペレーションのキー条件式
最初の文字が a-z または A-Z であり、残りの文字 (ある場合、2 番目以降の文字) が a-z、A-Z、または 0-9 である場合は、キー条件式で任意の属性値を使用できます。さらに、属性名は DynamoDB の予約語であってはいけません。(詳細リストについては、「DynamoDB の予約語」を参照してください) 属性名がこれらの要件を満たさない場合は、式の属性名をプレースホルダーとして定義する必要があります。詳細については、「DynamoDB の式の属性名 (エイリアス)」を参照してください。
特定のパーティションキー値を持つ項目は、DynamoDB によってソートキーの値で並べ替えられた順序で近くに配置されて保存されます。Query オペレーションでは、並べ替えられた順序でDynamoDB によって項目が取得され、KeyConditionExpression や存在する任意の FilterExpression を使用して処理されます。その時初めて、Query の結果がクライアントに返されます。
Query オペレーションは常に結果セットを返します。一致する項目がない場合、結果セットは空になります。
Query の結果は常にソートキーの値によってソートされます。ソートキーのデータ型が Number である場合は、結果が番号順で返されます。その他の場合は、UTF-8 バイトの順序で結果が返されます。デフォルトの並べ替え順序は昇順です。順序を反転させるには、ScanIndexForward パラメータを false に設定します。
1 回の Query オペレーションで、最大 1 MB のデータを取得できます。この制限は、FilterExpression または ProjectionExpression が結果に適用される前に適用されます。レスポンスに LastEvaluatedKey が存在し、Null 以外の場合、結果セットをページ分割する必要があります (DynamoDB でテーブルクエリ結果をページ分割する を参照)。
キー条件式の例
検索条件を指定するには、キー条件式 (テーブルまたはインデックスから読み取る項目を決定する文字列) を使用します。
等価条件としてパーティションキーの名前と値を指定する必要があります。キー条件式では、非キー属性を使用することはできません。
オプションで、ソートキーに 2 番目の条件を指定できます (存在する場合)。ソートキーの条件では、次の比較演算子を 1 つ使用する必要があります。
-
— 属性a=baが値bと等しい場合、true -
—a<baがb未満の場合、true -
—a<=baがb以下である場合、true -
—a>baがbより大きい場合、true -
—a>=baがb以上である場合、true -
—aBETWEENbANDcaがb以上で、c以下である場合、true。
次の関数もサポートされます。
-
begins_with (— 属性の値a,substr)が特定のサブ文字列から始まる場合、true。a
キー条件式の使用方法を示す AWS Command Line Interface (AWS CLI) の例を次に示します。これらの式では、実際の値の代わりにプレースホルダー (:name や :sub など) を使用しています。詳細については、「DynamoDB の式の属性名 (エイリアス)」および「DynamoDB での式属性値の使用」を参照してください。
例
Thread テーブルに対して、特定の ForumName (パーティションキー) についてのクエリを実行します。その ForumName の値を持つすべての項目はクエリによって読み込まれます。これはソートキー (Subject) が KeyConditionExpression に含まれないためです。
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
例
Thread テーブルに対して、特定の ForumName (パーティションキー) についてのクエリを実行しますが、今回は指定の Subject (ソートキー) を持つ項目のみを返します。
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json
--expression-attribute-values の引数は、values.json のファイルに保存されます。
{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }
例
Reply テーブルに対して、特定の Id (パーティションキー) についてのクエリを実行しますが、ReplyDateTime (ソートキー) が特定の文字で始まる項目のみを返します。
aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json
--expression-attribute-values の引数は、values.json のファイルに保存されます。
{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }