DynamoDB の条件式とフィルター式、演算子、関数
Amazon DynamoDB テーブルのデータを操作するには、PutItem
、UpdateItem
、DeleteItem
の各オペレーションを使用します。これらのデータ操作オペレーションでは、どの項目を修正する必要があるかを判断するために、条件式を指定できます。条件式が true と評価される場合、オペレーションは成功します。それ以外の場合は、このオペレーションは失敗します。
このセクションでは、Amazon DynamoDB の書き込みフィルター式と条件式の組み込み関数およびキーワードについて説明します。DynamoDB で使用する関数とプログラミングの詳細については、「DynamoDB と AWS SDK を使用したプログラミング」と「DynamoDB API リファレンス」を参照してください。
フィルター式と条件式の構文
以下の構文の概要で、operand
は次のいずれかです。
-
最上位の属性名 (
Id
、Title
、Description
、ProductCategory
など) -
入れ子の属性を参照するドキュメントパス
condition-expression ::=
operand
comparatoroperand
|operand
BETWEENoperand
ANDoperand
|operand
IN (operand
(','operand
(, ...) )) | function |condition
ANDcondition
|condition
ORcondition
| NOTcondition
| (condition
) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path
) | attribute_not_exists (path
) | attribute_type (path
,type
) | begins_with (path
,substr
) | contains (path
,operand
) | size (path
)
比較の実行
これらのコンパレータを使用して、オペランドを単一の値と比較します。
-
—a
=b
a
がb
と等しい場合、True -
—a
<>b
a
がb
と等しくない場合、True -
—a
<b
a
がb
未満の場合、True -
—a
<=b
a
がb
以下である場合、True -
—a
>b
a
がb
より大きい場合、True -
—a
>=b
a
がb
以上である場合、True
値の範囲または値の列挙リストに対してオペランドを比較するには、BETWEEN
および IN
キーワードを使用します。
-
-a
BETWEENb
ANDc
a
がb
以上で、c
以下である場合、True。 -
—a
IN (b
,c
,d
)a
がリスト内の任意の値と等しい場合、True。例では、b
、c
、d
のいずれかと等しい場合。リストには、コンマで区切って最大 100 個の値を指定できます。
関数
以下の関数を使用して、ある属性が項目に存在するか判定したり、属性の値を評価したりします。これらの関数名では大文字と小文字が区別されます。入れ子の属性では、完全ドキュメントパスを指定する必要があります。
関数 | 説明 |
---|---|
|
項目に、 例:
|
|
例: 項目に
|
|
指定したパスの属性が、特定のデータ型のものである場合、true。
例:
|
|
例: 正面図 URL の最初の数文字が
式の属性値 |
|
パスとオペランドは区別する必要があります。つまり、 例:
式の属性値 例: 製品が赤で入手可能かどうかを確認します。
式の属性値 |
|
属性のサイズを表す数値を返します。以下は、 属性は 例: 文字列
属性が 例:
属性が 例: 製品が複数の色で入手可能かどうかを確認します。式の属性値
属性が 例:
|
論理評価
論理評価を実行するには、AND
、OR
、NOT
キーワードを使用します。以下のリストでは、a
と b
は評価される条件を示しています。
-
—a
ANDb
a
とb
の両方が true である場合、True。 -
—a
ORb
a
またはb
のどちらか (または両方) が true の場合、True。 -
NOT
—a
a
が false の場合は True。a
が true の場合は Falsee。
以下は、オペレーションの AND のコード例です。
dynamodb-local (*)> select * from exprtest where a > 3 and a <
5;
括弧
論理評価の優先順位を変更するには括弧を使用します。たとえば、条件 a
と b
が true で、条件 c
が false であるとします。次の式は true と評価されます。
-
a
ORb
ANDc
しかし、条件を括弧で囲むと、それが最初に評価されます。たとえば、次の式は false と評価されます。
-
(
a
ORb
) ANDc
注記
式では括弧を入れ子にできます。最も内側の括弧が最初に評価されます。
以下は、論理評価で括弧を付けたコード例です。
dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or
( a = 5 and c = “coffee”);
条件の優先順位
DynamoDB では、条件は次の優先順位ルールを使用して左から右に評価されます。
-
= <> < <= > >=
-
IN
-
BETWEEN
-
attribute_exists attribute_not_exists begins_with contains
-
括弧
-
NOT
-
AND
-
OR