本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
KeyConditions (舊版)
注意
我們建議您盡可能使用新的表達式參數,而不要使用舊版參數。如需詳細資訊,請參閱在 DynamoDB 中使用表達式。如需取代此參數之新參數的特定資訊,請參閱 請KeyConditionExpression改用 。。
舊版條件式參數 KeyConditions
包含 Query
操作的選取條件。對於資料表上的查詢,您可以僅對資料表主索引鍵屬性設定條件。您必須將分割區索引鍵名稱和值提供為 EQ
條件。您可選擇性地提供指向排序索引鍵的第二個條件。
注意
如未提供排序索引鍵條件,則會擷取所有符合分割區索引鍵的項目。如果 FilterExpression
或 QueryFilter
存在,則會在擷取項目後套用。
對於索引上的查詢,您可以僅對索引鍵屬性設定條件。您必須將索引分割區索引鍵名稱和值提供為 EQ
條件。您可選擇提供指向索引排序索引鍵的第二個條件。
每個 KeyConditions
元素包含要比較的屬性名稱,並具有下列資訊:
-
AttributeValueList
:針對所提供的屬性進行評估的一或多個數值。清單中值的數目依使用的ComparisonOperator
而定。Number 類型的數值比較為數字。
大於、等於或小於 的字串值比較是根據具有 UTF-8 二進位編碼的 Unicode。例如,
a
大於A
,a
大於B
。針對 Binary,每當 DynamoDB 比較二進位值時,都會將二進位資料的每個位元組視為不帶正負號。
-
ComparisonOperator
:用於評估屬性的比較程式。例如:等於、大於和小於。針對
KeyConditions
,只支援下列比較運算子:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
以下是這些比較運算子的描述。
-
EQ
:等於。AttributeValueList
僅可包含 String、Number 或 Binary 類型 (非集合類型) 的一個AttributeValue
。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不等於{"N":"6"}
。另外,{"N":"6"}
不等於{"NS":["6", "2", "1"]}
。 -
LE
:小於或等於。AttributeValueList
僅可包含 String、Number 或 Binary 類型 (非集合類型) 的一個AttributeValue
元素。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不等於{"N":"6"}
。另外,{"N":"6"}
不與{"NS":["6", "2", "1"]}
比較。 -
LT
:小於。AttributeValueList
僅可包含 String、Number 或 Binary 類型 (非集合類型) 的一個AttributeValue
。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不等於{"N":"6"}
。另外,{"N":"6"}
不與{"NS":["6", "2", "1"]}
比較。 -
GE
:大於或等於。AttributeValueList
僅可包含 String、Number 或 Binary 類型 (非集合類型) 的一個AttributeValue
元素。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不等於{"N":"6"}
。另外,{"N":"6"}
不與{"NS":["6", "2", "1"]}
比較。 -
GT
:大於。AttributeValueList
僅可包含 String、Number 或 Binary 類型 (非集合類型) 的一個AttributeValue
元素。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不等於{"N":"6"}
。另外,{"N":"6"}
不與{"NS":["6", "2", "1"]}
比較。 -
BEGINS_WITH
:檢查字首。AttributeValueList
僅可包含 String 或 Binary 類型 (非 Number 或集合類型) 的一個AttributeValue
。比較的目標屬性必須是 String 或 Binary 類型 (非 Number 或集合類型)。 -
BETWEEN
:大於或等於第一個數值,並且小於或等於第二個數值。AttributeValueList
必須包含 String、Number 或 Binary 類型 (非集合類型) 的兩個AttributeValue
元素。如果目標數值大於或等於第一個元素,並且小於或等於第二個元素,則目標屬性相符。如果項目內含的AttributeValue
元素所屬類型與請求中提供的類型不同,則數值不相符。例如,{"S":"6"}
不與{"N":"6"}
比較。另外,{"N":"6"}
不與{"NS":["6", "2", "1"]}
比較。
-
請KeyConditionExpression改用 - 範例
假設您想從 Music 資料表擷取數個具有相同分割區索引鍵的項目。您可以搭配 KeyConditions
參數使用Query
請求,如本 AWS CLI 範例所示:
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist":{ "ComparisonOperator":"EQ", "AttributeValueList": [ {"S": "No One You Know"} ] }, "SongTitle":{ "ComparisonOperator":"BETWEEN", "AttributeValueList": [ {"S": "A"}, {"S": "M"} ] } }'
您可以改用 KeyConditionExpression
。
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \ --expression-attribute-values '{ ":a": {"S": "No One You Know"}, ":t1": {"S": "A"}, ":t2": {"S": "M"} }'