KeyConditions
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
に指定できるのは、文字列型、数値型、またはバイナリ型のAttributeValue
1 つのみです (セット型は指定できません)。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
と{"N":"6"}
は等しくありません。また、{"N":"6"}
と{"NS":["6", "2", "1"]}
も等しくありません。 -
LE
: 以下。AttributeValueList
に指定できるのは、文字列型、数値型、またはバイナリ型のAttributeValue
要素 1 つのみです (セット型は指定できません)。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
と{"N":"6"}
は等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と同等ではありません。 -
LT
: 未満。AttributeValueList
に指定できるのは、文字列型、数値型、またはバイナリ型のAttributeValue
1 つのみです (セット型は指定できません)。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
と{"N":"6"}
は等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と同等ではありません。 -
GE
: 以上。AttributeValueList
に指定できるのは、文字列型、数値型、またはバイナリ型のAttributeValue
要素 1 つのみです (セット型は指定できません)。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
と{"N":"6"}
は等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と同等ではありません。 -
GT
: より大きい。AttributeValueList
に指定できるのは、文字列型、数値型、またはバイナリ型のAttributeValue
要素 1 つのみです (セット型は指定できません)。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
と{"N":"6"}
は等しくありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と同等ではありません。 -
BEGINS_WITH
: プレフィックスのチェック。AttributeValueList
に指定できるのは、文字列型またはバイナリ型のAttributeValue
1 つのみです (数値型またはセット型は指定できません)。比較対象の属性は、(数値型またはセット型ではなく) 文字列型またはバイナリ型である必要があります。 -
BETWEEN
: 最初の値以上、かつ 2 番目の値以下。AttributeValueList
には、同じ型 (文字列、数値、またはバイナリ) のAttributeValue
要素を 2 つ指定する必要があります (セット型は指定できません)。対象の属性が一致するのは、対象の値が最初の要素以上かつ 2 番目の要素以下の場合です。リクエストで指定した型とは異なる型のAttributeValue
要素が項目に含まれている場合、値は一致しません。たとえば、{"S":"6"}
は{"N":"6"}
と同等ではありません。また、{"N":"6"}
は{"NS":["6", "2", "1"]}
と同等ではありません。
-
代替として KeyConditionExpression を使用する
Music テーブルから、同じパーティションキーを持つ複数の項目を取得するとします。この AWS CLI の例のように、KeyConditions
パラメータを指定して Query
リクエストを使用できます。
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"} }'