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

比較演算子および関数リファレンス

このセクションでは、Amazon DynamoDB の書き込み条件式の組み込み関数およびキーワードについて説明します。

条件式の構文

以下の構文の概要で、operand は次のいずれかです。

  • 最上位の属性名 (IdTitleDescriptionProductCategory など)

  • 入れ子の属性を参照するドキュメントパス

condition-expression ::= operand comparator operand | operand BETWEEN operand AND operand | operand IN ( operand (',' operand (, ...) )) | function | condition AND condition | condition OR condition | NOT condition | ( condition ) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path) | attribute_not_exists (path) | attribute_type (path, type) | begins_with (path, substr) | contains (path, operand) | size (path)

比較の実行

これらのコンパレータを使用して、値の範囲または値の列挙リストに対してオペランドを比較します。

  • a = bab と等しい場合、true

  • a <> bab と等しくない場合、true

  • a < bab より小さい場合、true

  • a <= bab 以下である場合、true

  • a > bab より大きい場合、true

  • a >= bab 以上である場合、true

値の範囲または値の列挙リストに対してオペランドを比較するには、BETWEEN および IN キーワードを使用します。

  • a BETWEEN b AND c - ab 以上で、c 以下である場合、true。

  • a IN (b, c, d) a がリスト内の任意の値 — 例では、bcd のいずれかと等しい場合、true。リストには、コンマで区切って最大 100 個の値を指定できます。

関数

以下の関数を使用して、ある属性が項目に存在するか判定したり、属性の値を評価したりします。これらの関数名では大文字と小文字が区別されます。入れ子の属性では、完全ドキュメントパスを指定する必要があります。

関数 説明

attribute_exists (path)

項目に、path で指定した属性が含まれる場合、true。

例: Product テーブルの項目に側面図があるかどうかを確認します。

  • attribute_exists (Pictures.SideView)

attribute_not_exists (path)

path で指定した属性が項目に存在しない場合、true。

例: 項目に Manufacturer 属性があるかどうかを確認します。

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

指定したパスの属性が、特定のデータ型のものである場合、true。type パラメータは次のいずれかである必要があります。

  • S — 文字列

  • SS — 文字列セット

  • N — 数値

  • NS — 数値セット

  • B — バイナリ

  • BS — バイナリセット

  • BOOL — ブール

  • NULL — Null

  • L — リスト

  • M — マップ

type パラメータには、式の属性値を使用する必要があります。

例: QuantityOnHand 属性がリスト型のものであるかどうかを確認します。この例では、:v_sub は文字列 L のプレースホルダーです。

  • attribute_type (ProductReviews.FiveStar, :v_sub)

type パラメータには、式の属性値を使用する必要があります。

begins_with (path, substr)

path で指定された属性が特定のサブ文字列から始まる場合、true。

例: 正面図 URL の最初の数文字が http:// かどうかを確認します。

  • begins_with (Pictures.FrontView, :v_sub)

式の属性値 :v_sub は、http:// のプレースホルダーです。

contains (path, operand)

path で指定された属性が次の属性である場合、true。

  • 特定のサブ文字列を含む String

  • 設定の中に特定の要素を含む Set

いずれの場合でも、operandString である必要があります。

パスとオペランドは異なっている必要があります。つまり contains (a, a) はエラーを返します。

例: Brand 属性にサブ文字列 Company が含まれているかどうかを確認します。

  • contains (Brand, :v_sub)

式の属性値 :v_sub は、Company のプレースホルダーです。

例: 製品が赤で入手可能かどうかを確認します。

  • contains (Color, :v_sub)

式の属性値 :v_sub は、Red のプレースホルダーです。

size (path)

属性のサイズを表す数値を返します。以下は、size で使用できる有効なデータ型です。

属性は String 型で、size は文字列の長さを返します。

例: 文字列 Brand が 20 文字以下であるかどうかを確認します。式の属性値 :v_sub は、20 のプレースホルダーです。

  • size (Brand) <= :v_sub

属性が Binary バイナリ型の場合、size は属性値のバイト数を返します。

例: ProductCatalog 項目に VideoClip という名前のバイナリ属性があるとします。この属性には使用中の製品の短いビデオが含まれます。次の式は、VideoClip が 64,000 バイトを超えるかどうかを確認します。式の属性値 :v_sub は、64000 のプレースホルダーです。

  • size(VideoClip) > :v_sub

属性が Set データ型の場合、size は設定の要素数を返します。

例: 製品が複数の色で入手可能かどうかを確認します。式の属性値 :v_sub は、1 のプレースホルダーです。

  • size (Color) < :v_sub

属性が List 型または Map のものである場合、size は子要素の数を返します。

例: OneStar のレビューの数が特定のしきい値を超えたかどうかを確認します。式の属性値 :v_sub は、3 のプレースホルダーです。

  • size(ProductReviews.OneStar) > :v_sub

論理評価

論理評価を実行するには、ANDORNOT キーワードを使用します。以下のリストでは、ab は評価される条件を示しています。

  • a AND bab の両方が true である場合、true。

  • a OR ba または b のどちらか (または両方) が true の場合、true。

  • NOT aa が false の場合、true。a が true の場合、false。

括弧

論理評価の優先順位を変更するには括弧を使用します。たとえば、条件 ab が true で、条件 c が false であるとします。次の式は true と評価されます。

  • a OR b AND c

しかし、条件を括弧で囲むと、それが最初に評価されます。たとえば、次の式は false と評価されます。

  • (a OR b) AND c

注記

式では括弧を入れ子にできます。最も内側の括弧が最初に評価されます。

条件の優先順位

DynamoDB では、条件は次の優先順位ルールを使用して左から右に評価されます。

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • 括弧

  • NOT

  • AND

  • OR