QueryFilter (レガシー)
注記
可能な限り、これらのレガシーパラメータの代わりに新しい式パラメータを使用することをお勧めします。詳細については、「DynamoDB での式の使用」を参照してください。このパラメータに代わる新しいパラメータの具体的な情報については、「代わりに FilterExpression を使用します。」を参照してください。
Query
オペレーションでは、レガシー条件パラメータ QueryFilter
は、項目が読み込まれた後にクエリ結果を評価し、目的の値のみを返す条件です。
このパラメータは、リストおよびマップ型の属性をサポートしません。
注記
QueryFilter
は、項目が読み込まれた後に適用されます。フィルタリングのプロセスでは、追加の読み込み容量ユニットは消費されません。
QueryFilter
マップで複数の条件を指定すると、デフォルトでは、すべての条件が true に評価される必要があります。つまり、条件は AND
演算子を使用して結合されます (ConditionalOperator (レガシー) パラメータを使用して条件を OR に設定できます。その場合、すべての条件ではなく、少なくとも 1 つの条件が true に評価される必要があります)。
QueryFilter
ではキー属性を使用できません。パーティションキーまたはソートキーでフィルター条件を定義することはできません。
各 QueryFilter
要素は、比較する属性名と次の属性で構成されます。
-
AttributeValueList
- 指定された属性に対して評価する 1 つ以上の値。リスト内の値の数は、ComparisonOperator
で指定されている演算子により異なります。数値型の場合、値の比較は数値です。
より大きい、等しい、より小さい文字列値の比較は、UTF-8 バイナリエンコーディングに基づいています。例えば、
a
はA
より大きく、a
はB
より大きいと評価されます。バイナリの場合、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 の例に示すように、Query
パラメータを含む QueryFilter
リクエストを使用できます。
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
を使用できます。
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"} }'