KeyConditions (舊版) - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

KeyConditions (舊版)

注意

我們建議您盡可能使用新的表達式參數,而不要使用舊版參數。如需詳細資訊,請參閱在 DynamoDB 中使用表達式。如需取代此參數之新參數的特定資訊,請參閱 KeyConditionExpression代替使用。

舊版條件式參數 KeyConditions 包含 Query 操作的選取條件。對於資料表上的查詢,您可以僅對資料表主索引鍵屬性設定條件。您必須將分割區索引鍵名稱和值提供為 EQ 條件。您可選擇性地提供指向排序索引鍵的第二個條件。

注意

如未提供排序索引鍵條件,則會擷取所有符合分割區索引鍵的項目。如果 FilterExpressionQueryFilter 存在,則會在擷取項目後套用。

對於索引上的查詢,您可以僅對索引鍵屬性設定條件。您必須將索引分割區索引鍵名稱和值提供為 EQ 條件。您可選擇提供指向索引排序索引鍵的第二個條件。

每個 KeyConditions 元素包含要比較的屬性名稱,並具有下列資訊:

  • AttributeValueList:針對所提供的屬性進行評估的一或多個數值。清單中值的數目依使用的 ComparisonOperator 而定。

    Number 類型的數值比較為數字。

    大於、等於或小於的字串值比較是以具有 UTF -8 二進位編碼的 Unicode 為基礎。例如,a 大於 Aa 大於 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"} }'