

# KeyConditions (herdado)
<a name="LegacyConditionalParameters.KeyConditions"></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 *KeyConditionExpression* em vez disso.](#KeyConditionExpression.instead). 

O parâmetro condicional herdado `KeyConditions` contém critérios de seleção para uma operação `Query`. Para consultar uma tabela, você pode ter condições apenas em atributos de chave primária da tabela. Você deve fornecer o nome e o valor da chave de partição como uma condição `EQ`. Opcionalmente, você pode fornecer uma segunda condição, referente à chave de classificação.

**nota**  
Se você não fornecer uma condição de chave de classificação, todos os itens que correspondem à chave de partição serão recuperados. Se `FilterExpression` ou `QueryFilter` estiver presente, isso será aplicado depois que os itens forem recuperados.

Para consultar um índice, você pode ter condições apenas em atributos da chave do índice. Você deve fornecer o nome e o valor da chave de partição do índice como uma condição `EQ`. Opcionalmente, você pode fornecer uma segunda condição, referente à chave de classificação do índice.

Cada elemento `KeyConditions` 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 `ComparisonOperator` que está sendo usado.

  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 Unicode com codificação UTF-8 binária. Por exemplo, `a` é maior que `A`, e `a` é maior que `B`.

  Para Binary, o DynamoDB trata cada byte de dados binários como não assinados ao comparar valores binários.
+  `ComparisonOperator`: um comparador para avaliar atributos. Por exemplo: é igual a, maior que e, menor que.

  Para `KeyConditions`, somente os seguintes operadores de comparação têm suporte:

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

  Veja a seguir as descrições desses operadores de comparação.
  +  `EQ` : Igual. 

     `AttributeValueList` pode conter apenas um `AttributeValue` do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elemento `AttributeValue` de um tipo diferente do especificado na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não é igual a `{"N":"6"}`. Além disso, `{"N":"6"}` não é igual a `{"NS":["6", "2", "1"]}`.
  +  `LE` : Menor ou igual a. 

     `AttributeValueList` pode conter apenas um elemento `AttributeValue` do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elemento `AttributeValue` de um tipo diferente do fornecido na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não é igual a `{"N":"6"}`. Além disso, `{"N":"6"}` não se compara a `{"NS":["6", "2", "1"]}`.
  +  `LT` : Menor que. 

     `AttributeValueList` pode conter apenas um `AttributeValue` do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elemento `AttributeValue` de um tipo diferente do fornecido na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não é igual a `{"N":"6"}`. Além disso, `{"N":"6"}` não se compara a `{"NS":["6", "2", "1"]}`.
  +  `GE` : Maior ou igual a. 

     `AttributeValueList` pode conter apenas um elemento `AttributeValue` do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elemento `AttributeValue` de um tipo diferente do fornecido na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não é igual a `{"N":"6"}`. Além disso, `{"N":"6"}` não se compara a `{"NS":["6", "2", "1"]}`.
  +  `GT` : Maior que. 

     `AttributeValueList` pode conter apenas um elemento `AttributeValue` do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elemento `AttributeValue` de um tipo diferente do fornecido na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não é igual a `{"N":"6"}`. Além disso, `{"N":"6"}` não se compara a `{"NS":["6", "2", "1"]}`.
  +  `BEGINS_WITH` : procura um prefixo. 

     `AttributeValueList` pode conter apenas um elemento `AttributeValue` do tipo String ou Binary (não um tipo Number ou Set). O atributo de destino da comparação deve ser do tipo String ou Binary (e não Number ou um tipo de conjunto).
  +  `BETWEEN` : maior ou igual ao primeiro valor e menor ou igual ao segundo valor. 

     `AttributeValueList` deve conter dois elementos `AttributeValue` do mesmo tipo, seja String, Number ou Binary (não um tipo Set). Um atributo de destino corresponderá se o valor de destino for maior que ou igual ao primeiro elemento e menor que ou igual ao segundo elemento. Se um item contém um elemento `AttributeValue` de um tipo diferente do fornecido na solicitação, os valores não coincidem. Por exemplo, `{"S":"6"}` não se compara a `{"N":"6"}`. Além disso, `{"N":"6"}` não se compara a `{"NS":["6", "2", "1"]}`. 

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

Suponha que você quisesse recuperar vários itens com a mesma chave de partição da tabela *Music*. Você poderia usar uma solicitação `Query` com um parâmetro `KeyConditions`, como neste exemplo da 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"} ]
        }
    }'
```

Você pode usar `KeyConditionExpression` em vez disso:

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