

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

**nota**  
Le recomendamos que utilice los nuevos parámetros de expresión en lugar de estos parámetros heredados siempre que sea posible. Para obtener más información, consulte [Uso de expresiones en DynamoDB](Expressions.md). Para obtener información específica sobre el nuevo parámetro que reemplaza a este, [Use *FilterExpression* en su lugar.](#FilterExpression.instead). 

En una operación `Query`, el parámetro condicional heredado `QueryFilter` es una condición que evalúa los resultados de la consulta después de que se hayan leído los elementos y devuelve únicamente los valores deseados.

Este parámetro no es compatible con atributos de tipo List o Map.

**nota**  
`QueryFilter` se aplica después de haber leído los elementos; el proceso de filtrado no consume ninguna unidad de capacidad de lectura adicional.

Si proporciona más de una condición en el mapa `QueryFilter`, de forma predeterminada todas las condiciones deben evaluarse en true (verdadero). Es decir, las condiciones se combinan con el operador `AND`. (Si lo desea, puede usar el parámetro [ConditionalOperator (heredado)](LegacyConditionalParameters.ConditionalOperator.md) para definir las condiciones en OR (o). En tal caso, deberá evaluarse en true (verdadero) al menos una de las condiciones, en lugar de todas ellas).

Tenga en cuenta que `QueryFilter` no admite atributos de clave. No puede definir una condición de filtro en una clave de partición ni de ordenación.

Cada entrada `QueryFilter` consta de un nombre de atributo que se va a comparar, junto con lo siguiente:
+  `AttributeValueList`: uno o más valores que se evaluarán respecto al atributo suministrado. El número de valores de la lista depende del operador especificado en `ComparisonOperator`.

  Para el tipo Number, las comparaciones de los valores son numéricas.

  Las comparaciones de valores String (cadena) de tipo mayor que, igual que o menor que se basan en la codificación UTF-8 binaria. Por ejemplo, `a` es mayor que `A` y `a` es mayor que `B`.

  Al comparar valores de tipo Binary, DynamoDB trata cada byte de los datos binarios como sin signo.

  Para obtener más información sobre cómo especificar los tipos de datos en JSON, consulte [API de bajo nivel de DynamoDB](Programming.LowLevelAPI.md).
+  `ComparisonOperator`: comparador que permite evaluar los atributos. Por ejemplo: igual que, mayor que y menor que.

  Están disponibles los siguientes operadores de comparación:

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

## Use *FilterExpression* en su lugar; ejemplo
<a name="FilterExpression.instead"></a>

Supongamos que quiere consultar la tabla *Music* y aplicar una condición a la coincidencia de elementos. Podría usar una solicitud `Query` con un parámetro `QueryFilter` como en este ejemplo de la 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"} ]
        }   
    }'
```

Puede utilizar `FilterExpression` en su lugar:

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