

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

# QueryFilter (舊版)
<a name="LegacyConditionalParameters.QueryFilter"></a>

**注意**  
我們建議您盡可能使用新的表達式參數，而不要使用舊版參數。如需詳細資訊，請參閱[在 DynamoDB 中使用表達式](Expressions.md)。如需取代此參數之新參數的特定資訊，請參閱 [改用 *FilterExpression*。](#FilterExpression.instead)。

在 `Query` 操作中，舊版條件式參數 `QueryFilter` 是可在項目讀取後評估查詢結果並僅傳回所需值的一個條件。

此參數不支援 List 或 Map 類型的屬性。

**注意**  
`QueryFilter` 會在項目讀取後套用；篩選程序不會使用任何額外的讀取容量單位。

如果在 `QueryFilter` 映射中提供一個以上條件，所有條件必須根據預設評估為 true。換句話說，條件是使用 `AND` 運算子的組合。(您可以改用 [ConditionalOperator (舊版)](LegacyConditionalParameters.ConditionalOperator.md) 參數將條件以 OR 連在一起。若要如此，則至少其中一個條件必須評估為 true，而不是全部都必須評估為 true。)

請注意，`QueryFilter` 不允許使用索引鍵屬性。您無法在分割區索引鍵或排序索引鍵上定義篩選條件。

每個 `QueryFilter` 元素包含要比較的屬性名稱，並具有下列資訊：
+  `AttributeValueList`：針對所提供的屬性進行評估的一或多個數值。清單中的數值數目依 `ComparisonOperator` 中指定的運算子而定。

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

  大於、等於或小於的 String 數值比較是以 UTF-8 二進位編碼為基礎。例如，`a` 大於 `A`，`a` 大於 `B`。

  針對 Binary 類型，每當 DynamoDB 比較二進位值時，都會將二進位資料的每個位元組視為不帶正負號。

  如需在 JSON 中指定資料類型的詳細資訊，請參閱 [DynamoDB 低階 API](Programming.LowLevelAPI.md)。
+  `ComparisonOperator`：用於評估屬性的比較程式。例如：等於、大於和小於。

  可以使用下列比較運算子：

   `EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN` 

## 改用 *FilterExpression* - 範例
<a name="FilterExpression.instead"></a>

假設您想查詢 *Music* 資料表，並將條件套用至相符項目。您可以搭配 `QueryFilter` 參數使用 `Query` 請求，如本 AWS CLI 範例所示：

```
aws dynamodb query \
    --table-name Music \
    --key-conditions '{
        "Artist": {
            "ComparisonOperator": "EQ",
            "AttributeValueList": [ {"S": "No One You Know"} ]
        }   
    }' \
    --query-filter '{
        "Price": {
            "ComparisonOperator": "GT",
            "AttributeValueList": [ {"N": "1.00"} ]
        }   
    }'
```

您可以改用 `FilterExpression`。

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a' \
    --filter-expression 'Price > :p' \
    --expression-attribute-values '{
        ":p": {"N":"1.00"}, 
        ":a": {"S":"No One You Know"}
    }'
```