KeyConditions (herdado) - Amazon DynamoDB

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 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

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