メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

QueryFilter

Query オペレーションでは、QueryFilter は項目が読み込まれ目的の値のみが返された後にクエリ結果を評価する条件です。

このパラメーターはリスト型またはマップ型の属性をサポートしていません。

注記

QueryFilter は項目が読み込まれた後に適用されます。フィルタ処理は追加の読み込みキャパシティーユニットを消費しません。

QueryFilter マップ内の複数の条件を指定すると、デフォルトではすべての条件が true である必要があります。言い換えると、条件は AND で結ばれます。(ConditionalOperator パラメーターを使用して、条件を OR で結ぶこともできます。その場合、条件のすべてではなく、そのうち少なくとも 1 つが true である必要があります。)

ただし、QueryFilter ではキー属性を使用できないことに注意してください。パーティションキーまたはソートキーにフィルタ条件を定義することはできません。

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

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

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

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

    バイナリ型では、DynamoDB は、バイナリ値を比較する際にバイナリデータの各バイトを符号なしとして扱います。

    JSON でデータ型を指定する方法については、「DynamoDB 低レベル API」を参照してください。

  • ComparisonOperator - 属性を評価するコンパレータ。たとえば、等しい、より大きい、より小さい、などです。

    次の比較演算子を使用できます。

    EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

代替として FilterExpression を使用する

Music テーブルにクエリして、項目が返される前に条件を適用するとします。この AWS CLI の例のように、QueryFilter パラメータを指定して Query リクエストを使用できます。

Copy
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist": { "ComparisonOperator": "EQ", "AttributeValueList": [ {"S": "No One You Know"} ] } }' \ --query-filter '{ "Price": { "ComparisonOperator": "GT", "AttributeValueList": [ {"N": "1.00"} ] } }'

ただし、代わりに FilterExpression を使用できます。

Copy
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a' \ --filter-expression 'Price > :p' \ --expression-attribute-values '{ ":p": {"N":"1.00"}, ":a": {"S":"No One You Know"} }'