

# ScanFilter (heredado)
<a name="LegacyConditionalParameters.ScanFilter"></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.](#FilterExpression2.instead). 

En una operación `Scan`, el parámetro condicional heredado `ScanFilter` es una condición que evalúa los resultados del examen y devuelve únicamente los valores deseados.

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

Si especifica más de una condición en el mapa `ScanFilter`, de forma predeterminada todas las condiciones deben evaluarse en true (verdadero). Es decir, se utiliza AND como operador para evaluar las condiciones. (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).

Cada entrada `ScanFilter` 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="FilterExpression2.instead"></a>

Supongamos que quiere examinar la tabla *Music* y aplicar una condición a la coincidencia de elementos. Podría usar una solicitud `Scan` con un parámetro `ScanFilter` como en este ejemplo de la AWS CLI:

```
aws dynamodb scan \
    --table-name Music \
    --scan-filter '{
        "Genre":{
            "AttributeValueList":[ {"S":"Rock"} ],
            "ComparisonOperator": "EQ"
        }
    }'
```

Puede utilizar `FilterExpression` en su lugar:

```
aws dynamodb scan \
    --table-name Music \
    --filter-expression 'Genre = :g' \
    --expression-attribute-values '{
        ":g": {"S":"Rock"} 
    }'
```