本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 中的條件和篩選條件表達式、運算子和函數
若要操作 DynamoDB 資料表中的資料,您可以使用 PutItem
、 UpdateItem
和 DeleteItem
操作。針對這些資料操控操作,您可以指定條件表達式來判斷應該修改的項目。如果條件表達式評估為 true,操作會成功。否則,操作會失敗。
本節說明在 Amazon DynamoDB 中撰寫篩選條件表達式和條件表達式所使用的內建函數與關鍵字。如需使用 DynamoDB 進行函數和程式設計的詳細資訊,請參閱 使用 DynamoDB 和 進行程式設計 AWS SDKs和 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
. -
– 如果a
<>b
a
不等於b
. -
– 如果a
<b
a
小於b
. -
– 如果a
<=b
a
小於或等於b
. -
– 如果a
>b
a
大於b
. -
– 如果a
>=b
a
大於或等於b
.
使用 BETWEEN
與 IN
關鍵字可比較運算元與某範圍的值或列舉值清單:
-
– 如果a
BETWEENb
ANDc
a
大於或等於b
,且小於或等於c
. -
– 如果a
IN (b
,c
,d
)a
等於清單中的任何值,例如,b
,c
、 或d
。 清單最多可包含 100 個值,並以逗號分隔。
函數
使用下列函數可判斷項目中是否具有某屬性,或評估某屬性的值。這些函數名稱區分大小寫。針對巢狀屬性,您必須提供其完整文件路徑。
函式 | 描述 |
---|---|
|
如果項目包含 範例:檢查
|
|
如果項目中沒有 範例:檢查項目是否具有
|
|
如果指定路徑的屬性是特定資料類型,則為 true。
您必須為 範例:檢查
您必須為 |
|
如果 範例:檢查前視圖圖片的前幾個字元是否為 URL
表達式屬性值 |
|
如果
如果 路徑和運算元必須不同。也就是說, 範例:檢查
表達式屬性值 範例:檢查產品是否提供紅色款式。
表達式屬性值 |
|
傳回代表屬性大小的數字。以下是可搭配 如果屬性的類型為 範例:檢查字串
如果屬性的類型為 範例:假設
如果屬性是 範例:檢查產品是否提供多色款式。表達式屬性值
如果屬性的類型是 範例:檢查
|
邏輯評估
使用 AND
、OR
與 NOT
關鍵字可執行邏輯評估。在下列清單中,a
以及 b
代表要評估的條件。
-
– 如果a
ANDb
a
以及b
都是 true。 -
– 如果為 ,則為 truea
ORb
a
或b
(或兩者) 為 true。 -
NOT
– 如果a
a
為 false。如果為 Falsea
為 true。
以下是 操作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