ScanFilter - Amazon DynamoDB

ScanFilter

Scan オペレーションでは、スキャン結果を評価して必要な値のみを返す ScanFilter が条件です。

注記

このパラメータは、リストおよびマップ型の属性をサポートしません。

複数の条件を指定すると、ScanFilter マップの場合、デフォルトでは、すべての条件が true に評価される必要があります。つまり、すべての条件が一緒に AND 処理されます。(ConditionalOperator パラメータを使用して条件を OR に設定できます。その場合、すべての条件ではなく、少なくとも 1 つの条件が true に評価される必要があります)。

ScanFilter 要素は、比較する属性名と次の属性で構成されます。

  • 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 の例に示すように、Scan パラメータを含む ScanFilter リクエストを使用できます。

aws dynamodb scan \ --table-name Music \ --scan-filter '{ "Genre":{ "AttributeValueList":[ {"S":"Rock"} ], "ComparisonOperator": "EQ" } }'

しかし、代わりに FilterExpression を使用することができます。

aws dynamodb scan \ --table-name Music \ --filter-expression 'Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'