

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

**nota**  
Sugerimos que você use os novos parâmetros de expressão, em vez desses parâmetros herdados. Para obter mais informações, consulte [Usar expressões no DynamoDB](Expressions.md). Para obter informações específicas sobre o novo parâmetro que substitui este, [Use *FilterExpression* em vez disso.](#FilterExpression.instead). 

Em uma operação `Query`, parâmetro condicional herdado `QueryFilter` é uma condição que avalia os resultados da consulta depois que os itens são lidos e retorna apenas os valores desejados.

Este parâmetro não tem suporte a atributos do tipo List ou Map.

**nota**  
Um `QueryFilter` é aplicado depois que os itens já foram lidos, o processo de filtragem não consome unidades de capacidade de leitura adicionais.

Se você fornecer mais de uma condição no mapa `QueryFilter`, por padrão, todas as condições deverão ser avaliadas como verdadeiras. Em outras palavras, as condições são combinadas usando o operador `AND`. (Em vez disso, você pode usar o parâmetro [ConditionalOperator (herdado)](LegacyConditionalParameters.ConditionalOperator.md) processar as condições com o operador OR. Se fizer isso, pelo menos uma das condições deverá ser avaliada como true, em vez de todas elas.)

Observe que `QueryFilter` não permite atributos de chave. Você não pode definir uma condição de filtro em uma chave de partição ou uma chave de classificação.

Cada elemento `QueryFilter` consiste em um nome de atributo a ser comparado, junto com o seguinte:
+  `AttributeValueList`: um ou mais valores para avaliar em relação ao atributo fornecido. O número de valores na lista depende do operador especificado em `ComparisonOperator`.

  Para o tipo Number, as comparações de valor são numéricas.

  As comparações de valor String para "maior que", "igual a" ou "menor que" são baseadas em codificação UTF-8 binária. Por exemplo, `a` é maior que `A`, e `a` é maior que `B`.

  Para o tipo Binary, o DynamoDB trata cada byte de dados binários como não assinados ao comparar valores binários.

  Para obter mais informações sobre como especificar tipos de dados em JSON, consulte [API de baixo nível do DynamoDB](Programming.LowLevelAPI.md).
+  `ComparisonOperator`: um comparador para avaliar atributos. Por exemplo: é igual a, maior que e, menor que.

  Os seguintes operadores de comparação estão disponíveis:

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

## Use *FilterExpression* em vez disso: exemplo
<a name="FilterExpression.instead"></a>

Suponha que você quisesse consultar a tabela *Music* e aplicar uma condição aos itens correspondentes. Você poderia usar uma solicitação `Query` com um parâmetro `QueryFilter`, como neste exemplo da 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"} ]
        }   
    }'
```

Você pode usar `FilterExpression` em vez disso:

```
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"}
    }'
```