DynamoDB 中查詢操作的篩選條件運算式 - Amazon DynamoDB

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

DynamoDB 中查詢操作的篩選條件運算式

若您需要更精確的 Query 結果,您可以選擇性的提供篩選條件表達式。篩選條件表達式會判斷要傳回 Query 結果中的哪些項目。所有其他結果皆會捨棄。

篩選條件表達式會在 Query 完成之後,並在傳回結果之前套用。因此,無論是否有篩選條件表達式,Query 都會使用相同數量的讀取容量。

Query 操作最多可擷取 1 MB 的資料。系統會先套用這項限制,再評估篩選條件表達式。

篩選條件表達式無法包含分割區索引鍵或排序索引鍵屬性。您必須在索引鍵條件表達式中指定這些屬性,而非篩選條件表達式。

篩選條件表達式的語法和索引鍵條件表達式的語法類似。篩選條件表達式可以使用與索引鍵條件表達式相同的比較子、函數和邏輯運算子。此外,篩選條件表達式可以使用不等於運算子 (<>)、OR 運算子、CONTAINS 運算子、IN 運算子、BEGINS_WITH 運算子、BETWEEN 運算子、EXISTS 運算子和 SIZE 運算子。如需詳細資訊,請參閱 DynamoDB 中查詢操作的關鍵條件表達式篩選條件和條件表達式的語法

範例

下列 AWS CLI 範例會查詢特定 ForumName(分割區金鑰) 和 Subject(排序金鑰) 的Thread資料表。在找到的項目中,只會傳回最受歡迎的討論主題:換句話說,只會傳回具有超過一定 Views 數量的主題。

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :fn and Subject = :sub" \ --filter-expression "#v >= :num" \ --expression-attribute-names '{"#v": "Views"}' \ --expression-attribute-values file://values.json

--expression-attribute-values 的引數會存放在 values.json 檔案中。

{ ":fn":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"}, ":num":{"N":"3"} }

請注意,Views 為 DynamoDB 中的保留字 (請參閱 DynamoDB 中的保留字),所以此範例會使用 #v 作為預留位置。如需詳細資訊,請參閱DynamoDB 中的表達式屬性名稱 (別名)

注意

篩選條件表達式會從 Query 結果集中移除項目。若可能的話,請避免在預期會擷取大量項目,但又需要捨棄它們大部分的情況下,使用 Query