KeyConditions (herdado)
nota
Sugerimos que você use os novos parâmetros de expressão, em vez desses parâmetros herdados. Para ter mais informações, consulte Usar expressões no DynamoDB. Para obter informações específicas sobre o novo parâmetro que substitui este, Use KeyConditionExpression em vez disso..
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 doComparisonOperator
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 queA
, ea
é maior queB
.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 umAttributeValue
do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elementoAttributeValue
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 elementoAttributeValue
do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elementoAttributeValue
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 umAttributeValue
do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elementoAttributeValue
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 elementoAttributeValue
do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elementoAttributeValue
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 elementoAttributeValue
do tipo String, Number ou Binary (não um tipo Set). Se um item contém um elementoAttributeValue
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 elementoAttributeValue
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 elementosAttributeValue
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 elementoAttributeValue
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
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"} }'