QueryFilter (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 FilterExpression em vez disso..
Em uma operação Query
, parâmetro condicional herdado QueryFilter
é uma condição que avalia os resultados da consulta depois que os itens são lidos e retorna apenas os valores desejados.
Este parâmetro não tem suporte a atributos do tipo List ou Map.
nota
Um QueryFilter
é aplicado depois que os itens já foram lidos, o processo de filtragem não consome unidades de capacidade de leitura adicionais.
Se você fornecer mais de uma condição no mapa QueryFilter
, por padrão, todas as condições deverão ser avaliadas como verdadeiras. Em outras palavras, as condições são combinadas usando o operador AND
. (Em vez disso, você pode usar o parâmetro ConditionalOperator (herdado) processar as condições com o operador OR. Se fizer isso, pelo menos uma das condições deverá ser avaliada como true, em vez de todas elas.)
Observe que QueryFilter
não permite atributos de chave. Você não pode definir uma condição de filtro em uma chave de partição ou uma chave de classificação.
Cada elemento QueryFilter
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 operador especificado emComparisonOperator
.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 codificação UTF-8 binária. Por exemplo,
a
é maior queA
, ea
é maior queB
.Para o tipo Binary, o DynamoDB trata cada byte de dados binários como não assinados ao comparar valores binários.
Para obter mais informações sobre como especificar tipos de dados em JSON, consulte API de baixo nível do DynamoDB.
-
ComparisonOperator
: um comparador para avaliar atributos. Por exemplo: é igual a, maior que e, menor que.Os seguintes operadores de comparação estão disponíveis:
EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN
Use FilterExpression em vez disso: exemplo
Suponha que você quisesse consultar a tabela Music e aplicar uma condição aos itens correspondentes. Você poderia usar uma solicitação Query
com um parâmetro QueryFilter
, como neste exemplo da AWS CLI:
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist": { "ComparisonOperator": "EQ", "AttributeValueList": [ {"S": "No One You Know"} ] } }' \ --query-filter '{ "Price": { "ComparisonOperator": "GT", "AttributeValueList": [ {"N": "1.00"} ] } }'
Você pode usar FilterExpression
em vez disso:
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a' \ --filter-expression 'Price > :p' \ --expression-attribute-values '{ ":p": {"N":"1.00"}, ":a": {"S":"No One You Know"} }'