本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
。