Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

KeyConditions

KeyConditionsQuery オペレーションの選択条件です。テーブルに対するクエリの場合、テーブルのプライマリキー属性のみの条件を持つことができます。EQ 条件としてパーティションキーの名前と値を提供する必要があります。オプションで、ソートキーを参照する 2 番目の条件を指定できます。

注記

ソートキー条件を指定しない場合、パーティションキーと一致するすべての項目が取得されます。FilterExpression または QueryFilter が存在する場合、項目が取得された後に適用されます。

インデックスのクエリでは、インデックスキー属性のみの条件を持つことができます。EQ 条件としてインデックスパーティションキーの名前と値を提供する必要があります。オプションで、インデックスソートキーを参照する 2 番目の条件を指定できます。

KeyConditions 要素は、次と併せて、比較する属性名で構成されます。

  • AttributeValueList - 提供された属性に対して評価する 1 つまたは複数の値。リストの値の数値は使用される ComparisonOperator によって異なります。

    数値型の場合、値比較は数値です。

    大なり、等しい、小なりの文字列値比較は、UTF-8 バイナリエンコードを使用した Unicode に基づきます。たとえば、aA より大きく、aB より大きい文字列です。

    バイナリ型では、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"} }'