Filtrar expressões para a operação de consulta no DynamoDB
Se você precisar refinar ainda mais os resultados de Query
, existe a opção de utilizar uma expressão de filtro. Uma expressão de filtro determina quais itens dos resultados de Query
devem ser retornados para você. Todos os outros resultados serão descartados.
Uma expressão de filtro é aplicada depois que uma operação Query
é concluída, mas antes que os resultados sejam retornados. Portanto, uma operação Query
consome a mesma quantidade de capacidade de leitura, independentemente de uma expressão de filtro estar presente.
Uma operação Query
pode recuperar um máximo de 1 MB de dados. Esse limite se aplica antes de a expressão de filtro ser avaliada.
Uma expressão de filtro não pode conter atributos de chave de partição ou de chave de classificação. É necessário especificar esses atributos na expressão de condição principal, não na de filtro.
A sintaxe de uma expressão de filtro é semelhante à de uma expressão de condição de chave. As expressões de filtro podem usar os mesmos comparadores, funções e operadores lógicos que uma expressão de condição principal. Além disso, as expressões de filtro podem usar o operador diferente de (<>
), bem como os operadores OR
, CONTAINS
, IN
, BEGINS_WITH
, BETWEEN
, EXISTS
e SIZE
. Para ter mais informações, consulte Principais expressões de condição para a operação de consulta no DynamoDB e Sintaxe para expressões de filtro e de condição.
exemplo
O exemplo da AWS CLI a seguir consulta a tabela Thread
para encontrar um ForumName
(chave de partição) e um Subject
(chave de classificação) específicos. Dos itens que são encontrados, somente os threads de discussão mais populares são retornados – em outras palavras, apenas os threads com mais de um determinado número de Views
.
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :fn and Subject = :sub" \ --filter-expression "#v >= :num" \ --expression-attribute-names '{"#v": "Views"}' \ --expression-attribute-values file://values.json
Os argumentos de --expression-attribute-values
são armazenados no arquivo values.json
.
{ ":fn":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"}, ":num":{"N":"3"} }
Observe que Views
é uma palavra reservada no DynamoDB (consulte Palavras reservadas no DynamoDB), portanto, este exemplo usa #v
como um espaço reservado. Para ter mais informações, consulte Nomes (aliases) de atributo de expressão no DynamoDB.
nota
Uma expressão de filtro remove itens do conjunto de resultados de Query
. Se possível, evite usar Query
onde você espera recuperar um grande número de itens, mas também precisa descartar a maioria desses itens.