Referência de operador de comparação e função - Amazon DynamoDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Referência de operador de comparação e função

Esta seção aborda as funções e palavras-chave integradas para escrever expressões de filtro e expressões de condição no Amazon DynamoDB. Para obter informações mais detalhadas sobre funções e programação com o DynamoDB, consulte Programação com o DynamoDB e os SDKs AWS e a Referência da API do DynamoDB.

Sintaxe para expressões de filtro e de condição

No seguinte resumo de sintaxe, um operando pode ser o seguinte:

  • Um nome de atributo de nível superior, como Id, Title, Description ou ProductCategory

  • Um caminho de documento que faz referência a um atributo aninhado

condition-expression ::= operand comparator operand | operand BETWEEN operand AND operand | operand IN ( operand (',' operand (, ...) )) | function | condition AND condition | condition OR condition | NOT condition | ( condition ) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path) | attribute_not_exists (path) | attribute_type (path, type) | begins_with (path, substr) | contains (path, operand) | size (path)

Fazer comparações

Use estes comparadores para comparar um operando com um intervalo de valores ou com uma lista enumerada de valores:

  • a = b: verdadeiro se a for igual a b.

  • a <> b: verdadeiro se a não for igual a b.

  • a < b: verdadeiro se a for menor que b.

  • a <= b: verdadeiro se a for menor que ou igual a b.

  • a > b: verdadeiro se a for maior que b.

  • a >= b: verdadeiro se a for maior ou igual a b.

Use as palavras-chave BETWEEN e IN para comparar um operando com um intervalo de valores ou com uma lista enumerada de valores:

  • a BETWEEN b AND c: verdadeiro se a for maior ou igual a b e menor ou igual a c.

  • a IN (b, c, d) : verdadeiro se a for igual a qualquer um dos valores na lista; por exemplo, b, c ou d. A lista pode conter até 100 valores, separados por vírgulas.

Funções

Use as funções a seguir para determinar se um atributo existe em um item ou para avaliar o valor de um atributo. Esses nomes de funções diferenciam maiúsculas de minúsculas. Para um atributo aninhado, você deve fornecer o caminho completo do documento.

Função Descrição

attribute_exists (path)

True se o item contiver o atributo especificado por path.

Exemplo: verificar se um item na tabela Product tem uma imagem de vista lateral.

  • attribute_exists (#Pictures.#SideView)

attribute_not_exists (path)

True se o atributo especificado por path não existir no item.

Exemplo: verificar se um item tem um atributo Manufacturer.

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

True se o atributo no caminho especificado for de um tipo de dados específico. O parâmetro type deve ser um dos seguintes:

  • S – String

  • SS: String Set

  • N – Number

  • NS: Number Set

  • B – Binary

  • BS Binary Set

  • BOOL – Boolean

  • NULL – Null

  • L – List

  • M – Map

Você deve usar um valor de atributo de expressão para o parâmetro type.

Exemplo: verificar se o atributo QuantityOnHand é do tipo Lista. Neste exemplo, :v_sub é um espaço reservado para a string L.

  • attribute_type (ProductReviews.FiveStar, :v_sub)

Você deve usar um valor de atributo de expressão para o parâmetro type.

begins_with (path, substr)

Verdadeiro se o atributo especificado por path começar com uma substring específica.

Exemplo: verificar se os primeiros caracteres do URL da imagem de vista frontal são http://.

  • begins_with (Pictures.FrontView, :v_sub)

O valor do atributo de expressão :v_sub é um espaço reservado para http://.

contains (path, operand)

Verdadeiro se o atributo especificado por path for um dos seguintes:

  • Uma String que contém uma substring específica.

  • Um Set que contém um elemento específico dentro dele.

  • Um List que contém um elemento específico dentro da lista.

Se o atributo especificado por path for String, o operand deve ser String. Se o atributo especificado por path for um Set, o operand deverá ser o tipo de elemento do conjunto.

O caminho e o operando devem ser distintos. Isto é, contains (a, a) retorna um erro.

Exemplo: verificar se o atributo Brand contém a substring Company.

  • contains (Brand, :v_sub)

O valor do atributo de expressão :v_sub é um espaço reservado para Company.

Exemplo: verificar se o produto está disponível em vermelho.

  • contains (Color, :v_sub)

O valor do atributo de expressão :v_sub é um espaço reservado para Red.

size (path)

Retorna um número que representa o tamanho de um atributo. Veja a seguir os tipos de dados válidos para uso com size.

Se o atributo for do tipo String, size retornará o comprimento da string.

Exemplo: verificar se a string Brand é menor ou igual a 20 caracteres. O valor do atributo de expressão :v_sub é um espaço reservado para 20.

  • size (Brand) <= :v_sub

Se o atributo for do tipo Binary, size retornará o número de bytes no valor do atributo.

Exemplo: suponha que o item de ProductCatalog tenha um atributo binário chamado VideoClip, que contém um curto vídeo sobre o produto em uso. A seguinte expressão verifica se VideoClip excede 64.000 bytes. O valor do atributo de expressão :v_sub é um espaço reservado para 64000.

  • size(VideoClip) > :v_sub

Se o atributo for de um tipo de dados de Set, size retornará o número de elementos no conjunto.

Exemplo: verificar se o produto está disponível em mais de uma cor. O valor do atributo de expressão :v_sub é um espaço reservado para 1.

  • size (Color) < :v_sub

Se o atributo for do tipo List ou Map, size retornará o número de elementos filho.

Exemplo: verificar se o número de revisões OneStar excedeu um determinado limite. O valor do atributo de expressão :v_sub é um espaço reservado para 3.

  • size(ProductReviews.OneStar) > :v_sub

Avaliações lógicas

Use as palavras-chave AND, OR e NOT para executar avaliações lógicas. Na lista a seguir, a e b representam condições a serem avaliadas.

  • a AND b: verdadeiro se a e b forem ambos verdadeiros.

  • a OR b: verdadeiro se a ou b ou ambos forem verdadeiros.

  • NOT a: verdadeiro se a for falso. Falso se a for verdadeiro.

Veja a seguir um exemplo de código de AND em uma operação.

dynamodb-local (*)> select * from exprtest where a > 3 and a < 5;

Parênteses

Use parênteses para alterar a precedência de uma avaliação lógica. Por exemplo, suponha que as condições a e b sejam verdadeiras e que a condição c seja falsa. As expressões a seguir são avaliadas como verdadeiras:

  • a OR b AND c

No entanto, se você colocar uma condição entre parênteses, ela será avaliada primeiro. Por exemplo, o seguinte é avaliado como falso:

  • (a OR b) AND c

nota

Você pode aninhar parênteses em uma expressão. Os componentes mais internos são avaliados primeiro.

Veja a seguir um exemplo de código com parênteses em uma avaliação lógica.

dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or ( a = 5 and c = “coffee”);

Precedência em condições

O DynamoDB avalia as condições da esquerda para a direita usando as seguintes regras de precedência:

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • Parênteses

  • NOT

  • AND

  • OR