Expected - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Expected

Expectedのための条件付きブロックですUpdateItemオペレーション. Expectedは属性/条件のペアのマップです。マップの各要素は、属性名、比較演算子、および 1 つ以上の値で構成されます。DynamoDB は、比較演算子を使用して、指定した値と属性を比較します。Fal EachExpected要素の場合、評価の結果はtrueまたはfalseのいずれかです。

複数の要素を指定すると、Expectedマップの場合、デフォルトでは、すべての条件が true に評価される必要があります。つまり、条件は一緒に AND 化されます。(「」ConditionalOperatorパラメーターを OR に設定します。 これを行う場合は、条件のうち少なくとも 1 つが、それらのすべてではなく true と評価される必要があります)。

そのファイルにExpectedマップが true と評価される場合、条件演算は成功で、それ以外の場合、失敗します。

Expectedには次のものが含まれます。

  • AttributeValueList-指定された属性に対して評価する 1 つ以上の値。リストの値の数は、ComparisonOperatorが使用されています。

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

    より大きい、等しい、またはより小さい文字列値の比較は、UTF-8 バイナリエンコーディングの Unicode に基づいています。例:a以上A, およびa以上B

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

  • ComparisonOperator-属性を評価するためのコンパレータAttributeValueList。比較を実行する場合、DynamoDB は強力な整合性のある読み込みを使用します。

    次の比較演算子が可能です。

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

    各比較演算子の説明は、以下のとおりです。

    • EQ: Equal. EQは、リストやマップを含むすべてのデータ型でサポートされています。

      AttributeValueListには 1 つのみ含めることができますAttributeValue型文字列型、数値型、バイナリ型、文字列セット、数値セット、またはバイナリセットの要素。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}非同等{"NS":["6", "2", "1"]}

    • NE: 等しくない NEは、リストやマップを含むすべてのデータ型でサポートされています。

      AttributeValueListには 1 つのみ含めることができますAttributeValue型、数値型、バイナリ型、文字列セット、数値セット、またはバイナリセット。アイテムにAttributeValueがリクエストで指定された型とは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}非同等{"NS":["6", "2", "1"]}

    • LE: 以下

      AttributeValueListには 1 つのみ含めることができますAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}と比較しない{"NS":["6", "2", "1"]}

    • LT: 未満

      AttributeValueListには 1 つのみ含めることができますAttributeValue型は、文字列型、数値型、またはバイナリ型(セット型ではない)型のいずれかです。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}と比較しない{"NS":["6", "2", "1"]}

    • GE: 以上

      AttributeValueListには 1 つのみ含めることができますAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}と比較しない{"NS":["6", "2", "1"]}

    • GT: より大きい。

      AttributeValueListには 1 つのみ含めることができますAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}非同等{"N":"6"}。「」も、{"N":"6"}と比較しない{"NS":["6", "2", "1"]}

    • NOT_NULL: 属性が存在します。NOT_NULLは、リストやマップを含むすべてのデータ型でサポートされています。

      注記

      この演算子は、データ型ではなく、属性の存在をテストします。属性のデータ型」a「がnullであり、NOT_NULLの場合、結果はブール値true。この結果は、属性」a「が存在します。そのデータ型はNOT_NULL比較演算子。

    • NULL: 属性は存在しません NULLは、リストやマップを含むすべてのデータ型でサポートされています。

      注記

      この演算子は、データ型ではなく、属性の存在しないかどうかをテストします。属性のデータ型」a「がnullであり、NULLの場合、結果はブール値false。これは、属性」a「が存在します。そのデータ型はNULL比較演算子。

    • CONTAINS: セット内のサブシーケンス、または値をチェックします。

      AttributeValueListには 1 つのみ含めることができますAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。比較のターゲット属性がString型である場合、演算子は部分文字列の一致をチェックします。比較のターゲット属性がバイナリ型である場合、演算子は入力に一致するターゲットのサブシーケンスを検索します。比較のターゲット属性がセット(」SS「,」NS「、または」BS「)、セットのいずれかのメンバーと完全一致が見つかった場合、演算子はtrueと評価されます。

      CONTAINS はリストでサポートされています。評価するとき」a CONTAINS b「,」a「はリストになりますが、」b「は、セット、マップ、またはリストにすることはできません。

    • NOT_CONTAINS: サブシーケンスの欠如、またはセット内の値がないかどうかをチェックします。

      AttributeValueListには 1 つのみ含めることができますAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。比較のターゲット属性がStringの場合、演算子は部分文字列の一致がないかどうかをチェックします。比較のターゲット属性がバイナリである場合、演算子は、入力に一致するターゲットのサブシーケンスがないかどうかをチェックします。比較のターゲット属性がセット(」SS「,」NS「、または」BS「)の場合、演算子は true と評価されます。does notセットの任意のメンバーと完全一致を見つける。

      NOT_CONTAINS は、リストでサポートされています。評価するとき」a NOT CONTAINS b「,」a「はリストになりますが、」b「は、セット、マップ、またはリストにすることはできません。

    • BEGINS_WITH: プレフィックスの有無を確認します。

      AttributeValueListには 1 つのみ含めることができますAttributeValue文字列型またはバイナリ型(数値型またはセット型ではありません)です。比較のターゲット属性は、文字列型またはバイナリ型でなければなりません(数値型またはセット型ではありません)。

    • IN: 2 つのセット内で一致する要素をチェックします。

      AttributeValueList1 つ以上のAttributeValue型(セット型ではない)文字列型、数値型、またはバイナリ型の要素です。これらの属性は、アイテムの既存のセットタイプ属性と比較されます。入力セットの要素が item 属性に存在する場合、式は true と評価されます。

    • BETWEEN: 最初の値以上で、2 番目の値以下です。

      AttributeValueListには以下が含まれている必要があります。AttributeValue同じ型の要素、文字列、数値、またはバイナリ(セット型ではない)のいずれかです。ターゲット属性は、ターゲット値が最初の要素より大きく、2番目の要素より小さい、または等しい場合に一致します。アイテムにAttributeValue要素がリクエストで提供されたものとは異なる型である場合、値は一致しません。例:{"S":"6"}と比較しない{"N":"6"}。「」も、{"N":"6"}と比較しない{"NS":["6", "2", "1"]}

次のパラメータは、AttributeValueListおよびComparisonOperator:

  • Value-属性と比較する DynamoDB の値。

  • Exists-条件付き操作を実行する前に DynamoDB が値を評価するブール値。

    • もしExiststrueに設定されている場合、DynamoDB は、その属性値がテーブル内にすでに存在するかどうかを確認します。見つかった場合、条件はtrueと評価され、それ以外の場合、条件はfalseと評価されます。

    • もしExistsfalseの場合、DynamoDB は属性値がnotテーブルに存在します。実際に値が存在しない場合、仮定は有効であり、条件は真と評価されます。値が見つかった場合、存在しないという仮定にもかかわらず、条件は false と評価されます。

    デフォルト値は、Existstrue

-ValueおよびExistsパラメーターはAttributeValueListおよびComparisonOperator。両方のパラメータセットを一度に使用すると、DynamoDB はValidationException例外。

注記

このパラメーターは、List または Map タイプの属性をサポートしていません。

使用アイテムConditionExpression代わりに

アイテムを変更したいとします。音楽テーブルと同じですが、特定の条件が真である場合に限ります。あなたは、UpdateItemリクエストをExpectedパラメータを使用します。次の AWS CLI の例のように、

aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --attribute-updates '{ "Price": { "Action": "PUT", "Value": {"N":"1.98"} } }' \ --expected '{ "Price": { "ComparisonOperator": "LE", "AttributeValueList": [ {"N":"2.00"} ] } }'

しかし、以下のコマンドを使用できます。ConditionExpression代わりに次のようになります。

aws dynamodb update-item \ --table-name Music \ --key '{ "Artist": {"S":"No One You Know"}, "SongTitle": {"S":"Call Me Today"} }' \ --update-expression 'SET Price = :p1' \ --condition-expression 'Price <= :p2' \ --expression-attribute-values '{ ":p1": {"N":"1.98"}, ":p2": {"N":"2.00"} }'