KeyConditions (レガシー)
注記
可能な限り、これらのレガシーパラメータの代わりに新しい式パラメータを使用することをお勧めします。詳細については、「DynamoDB での式の使用」を参照してください。このパラメータに代わる新しいパラメータの具体的な情報については、「代わりに KeyConditionExpression を使用します。」を参照してください。
レガシー条件パラメータ KeyConditions
には、Query
オペレーションの選択基準が含まれています。テーブルに対するクエリでは、テーブルのプライマリキー属性に対してのみ条件を設定できます。EQ
条件としてパーティションキーの名前と値を指定する必要があります。ソートキーを参照する 2 番目の条件を指定できます (オプション)。
注記
ソートキー条件を指定しない場合、パーティションキーに一致するすべての項目が取得されます。FilterExpression
または QueryFilter
が存在する場合、これは項目が取得された後に適用されます。
インデックスに対するクエリでは、インデックスキー属性に対してのみ条件を設定できます。EQ
条件としてインデックスパーティションキーの名前と値を指定する必要があります。インデックスソートキーを参照する 2 番目の条件を指定できます (オプション)。
各 KeyConditions
要素は、比較する属性名と次の属性で構成されます。
-
AttributeValueList
- 指定された属性に対して評価する 1 つ以上の値。リストの値の数は、使用されるComparisonOperator
エンジンによって異なります。数値型の場合、値の比較は数値です。
より大きい、等しい、またはより小さいの文字列値の比較は、UTF-8 バイナリエンコーディングの Unicode に基づきます。例えば、
a
はA
より大きく、a
はB
より大きいと評価されます。バイナリの場合、DynamoDB がバイナリ値を比較する際、バイナリデータの各バイトは符号なしとして扱われます。
-
ComparisonOperator
- 属性を評価するためのコンパレータ。例えば、等しい、より大きい、より小さいなどです。KeyConditions
の場合、次の比較演算子がサポートされています。EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
これらの比較演算子の説明を次に示します。
-
EQ
: 等しい。AttributeValueList
には、文字列、数値、またはバイナリの型 (セット型ではありません) の 1 つのAttributeValue
のみ含めることができます。リクエストで指定されているもの以外の型のAttributeValue
要素が項目に含まれる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と等しくありません。 -
LE
: より小さい、または等しい。AttributeValueList
には、文字列、数値、またはバイナリの型 (セット型ではありません) の 1 つのAttributeValue
要素のみ含めることができます。項目に含まれるAttributeValue
要素の型がリクエストで指定されている型と異なる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と比較されません。 -
LT
: より小さい。AttributeValueList
には、文字列、数値、またはバイナリの型 (セット型ではありません) の 1 つのAttributeValue
のみ含めることができます。項目に含まれるAttributeValue
要素の型がリクエストで指定されている型と異なる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と比較されません。 -
GE
: より大きい、または等しい。AttributeValueList
には、文字列、数値、またはバイナリの型 (セット型ではありません) の 1 つのAttributeValue
要素のみ含めることができます。項目に含まれるAttributeValue
要素の型がリクエストで指定されている型と異なる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と比較されません。 -
GT
: より大きい。AttributeValueList
には、文字列、数値、またはバイナリの型 (セット型ではありません) の 1 つのAttributeValue
要素のみ含めることができます。項目に含まれるAttributeValue
要素の型がリクエストで指定されている型と異なる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と比較されません。 -
BEGINS_WITH
: プレフィックスを確認します。AttributeValueList
には、文字列またはバイナリ型の 1 つのAttributeValue
のみを含めることができます (数値やセットではありません)。比較のターゲット属性は、文字列型またはバイナリ型である必要があります (数値型またはセット型ではありません)。 -
BETWEEN
: 最初の値よりも大きいか等しく、2 番目の値よりも小さいか等しくなります。AttributeValueList
には、文字列、数値、またはバイナリ (セットではありません) のいずれかの同じ型の 2 つのAttributeValue
要素を含む必要があります。ターゲット属性は、ターゲット値が最初の要素より大きいか等しく、2番目の要素より小さいか等しい場合に一致します。項目に含まれるAttributeValue
要素の型がリクエストで指定されている型と異なる場合、値は一致しません。例えば、{"S":"6"}
は{"N":"6"}
と比較されません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と比較されません。
-
代わりに KeyConditionExpression を使用 - 例
同じパーティションキーを持つ複数の項目を Music テーブルから取得する場合を考えてみます。次の AWS CLI の例に示すように、Query
パラメータを含む KeyConditions
リクエストを使用できます。
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"} }'