

# KeyConditions (heredado)
<a name="LegacyConditionalParameters.KeyConditions"></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 *KeyConditionExpression* en su lugar.](#KeyConditionExpression.instead). 

El parámetro condicional heredado `KeyConditions` contiene los criterios de selección de una operación `Query`. Para ejecutar una consulta en una tabla, solo puede usar condiciones con los atributos de clave principal de la tabla. Debe proporcionar el nombre y valor de la clave de partición como una condición `EQ`. Si lo desea, puede proporcionar una segunda condición referida a la clave de ordenación.

**nota**  
Si no proporciona una condición de clave de ordenación, se recuperarán todos los elementos que coincidan con la clave de partición. Si hay una expresión `FilterExpression` o `QueryFilter` presente, se aplicará después de recuperar los elementos.

Para ejecutar una consulta en un índice, solo puede usar condiciones con los atributos de clave del índice. Debe proporcionar el nombre y valor de la clave de partición del índice como una condición `EQ`. Si lo desea, puede proporcionar una segunda condición referida a la clave de ordenación del índice.

Cada entrada `KeyConditions` 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 valor de `ComparisonOperator` que se utilice.

  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 Unicode con 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.
+  `ComparisonOperator`: comparador que permite evaluar los atributos. Por ejemplo: igual que, mayor que y menor que.

  Para `KeyConditions`, solo se admiten los siguientes operadores de comparación:

   `EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN` 

  A continuación se indican las descripciones de estos operadores de comparación.
  +  `EQ`: igual que. 

     `AttributeValueList` puede contener un solo `AttributeValue` de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del especificado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no es igual que `{"N":"6"}`. `{"N":"6"}` tampoco es igual que `{"NS":["6", "2", "1"]}`.
  +  `LE`: menor o igual que. 

     `AttributeValueList` puede contener una sola entrada `AttributeValue` de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no es igual que `{"N":"6"}`. `{"N":"6"}` tampoco se compara con `{"NS":["6", "2", "1"]}`.
  +  `LT` : Menor que. 

     `AttributeValueList` puede contener un solo `AttributeValue` de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no es igual que `{"N":"6"}`. `{"N":"6"}` tampoco se compara con `{"NS":["6", "2", "1"]}`.
  +  `GE`: mayor o igual que. 

     `AttributeValueList` puede contener una sola entrada `AttributeValue` de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no es igual que `{"N":"6"}`. `{"N":"6"}` tampoco se compara con `{"NS":["6", "2", "1"]}`.
  +  `GT` : Mayor que. 

     `AttributeValueList` puede contener una sola entrada `AttributeValue` de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no es igual que `{"N":"6"}`. `{"N":"6"}` tampoco se compara con `{"NS":["6", "2", "1"]}`.
  +  `BEGINS_WITH`: comprueba si hay un prefijo. 

     `AttributeValueList` puede contener un solo `AttributeValue` de tipo String (cadena) o Binary (binario) (no de tipo Number [número] ni Set [conjunto]). El atributo de destino de la comparación debe ser un valor de tipo String o Binary (no de tipo Number ni Set).
  +  `BETWEEN`: mayor o igual que el primer valor y menor o igual que el segundo valor. 

     `AttributeValueList` debe contener dos entradas `AttributeValue` del mismo tipo, que puede ser String (cadena), Number (número) o Binary (binario) (pero no de tipo Set [conjunto]). Un atributo de destino coincide si el valor de destino es mayor o igual que la primer entrada y menor o igual que la segunda entrada. Si un elemento contiene una entrada `AttributeValue` de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo, `{"S":"6"}` no se compara con `{"N":"6"}`. `{"N":"6"}` tampoco se compara con `{"NS":["6", "2", "1"]}`. 

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

Supongamos que desea recuperar varios elementos con la misma clave de partición de la tabla *Music*. Podría usar una solicitud `Query` con un parámetro `KeyConditions` 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"} ]
        },
        "SongTitle":{
            "ComparisonOperator":"BETWEEN",
            "AttributeValueList": [ {"S": "A"}, {"S": "M"} ]
        }
    }'
```

Puede utilizar `KeyConditionExpression` en su lugar:

```
aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":a": {"S": "No One You Know"}, 
        ":t1": {"S": "A"}, 
        ":t2": {"S": "M"}
    }'
```