Condiziona e filtra espressioni, operatori e funzioni - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Condiziona e filtra espressioni, operatori e funzioni

Per manipolare i dati in una tabella DynamoDB, si utilizzano PutItem le UpdateItem operazioni, e. DeleteItem Per le operazioni di manipolazione dei dati, puoi specificare un'espressione di condizione per determinare quale elemento deve essere modificato. Se l'espressione della condizione restituisce true, l'operazione ha esito positivo. In caso contrario, l'operazione non va a buon fine.

In questa sezione sono descritte le funzioni e le parole chiave integrate per scrivere espressioni di condizione ed espressioni di filtro in Amazon DynamoDB. Per informazioni più dettagliate sulle funzioni e sulla programmazione con DynamoDB, consulta DynamoDB Programmazione con DynamoDB e AWS SDKs Reference. API

Sintassi per le espressioni di filtro e condizioni

Nel seguente riepilogo della sintassi, un operand può essere il seguente:

  • Un nome di attributo di primo livello, ad esempio Id, Title, Description o ProductCategory

  • Un percorso di documento che fa riferimento a un attributo nidificato

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)

Realizzazione di confronti

Usa questi comparatori per confrontare un operando con un singolo valore:

  • a = b— Vero se a è uguale a b.

  • a <> b— Vero se a non è uguale a b.

  • a < b— Vero se a è inferiore a b.

  • a <= b— Vero se a è inferiore o uguale a b.

  • a > b— Vero se a è maggiore di b.

  • a >= b— Vero se a è maggiore o uguale a b.

Utilizza le parole chiave BETWEEN e IN per confrontare un operando con un intervallo di valori o con un elenco enumerato di valori:

  • a BETWEEN b AND c— Vero se a è maggiore o uguale a be minore o uguale a c.

  • a IN (b, c, d) — Vero se a è uguale a qualsiasi valore nell'elenco, ad esempio uno qualsiasi dei b, c, oppure d. L'elenco può contenere fino a 100 valori, separati da virgole.

Funzioni

Utilizza le seguenti funzioni per determinare se un attributo è presente in un elemento o per valutare il valore di un attributo. I nomi di funzione rispettano la distinzione tra lettere maiuscole e minuscole. Per un attributo nidificato, è necessario fornire l'intero percorso del documento.

Funzione Descrizione

attribute_exists (path)

True se l'elemento contiene l'attributo specificato da path.

Esempio: Verifica se un elemento nella tabella Product ha un'immagine di vista laterale.

  • attribute_exists (#Pictures.#SideView)

attribute_not_exists (path)

True se l'attributo specificato da path non è presente nell'elemento.

Esempio: Verifica se un elemento ha un attributo Manufacturer.

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

True se l'attributo del percorso specificato è di un particolare tipo di dato. Il parametro type deve essere uno dei seguenti:

  • S: String

  • SS: set di stringhe

  • N: Number

  • NS: set numerico

  • B: binario

  • BS: set binario

  • BOOL: Boolean

  • NULL: null

  • L: list

  • M: Map

È necessario utilizzare un valore di attributo di espressione per il parametro type.

Esempio: Verifica se l'attributo QuantityOnHand è del tipo List. In questo esempio, :v_sub è un segnaposto per la stringa L.

  • attribute_type (ProductReviews.FiveStar, :v_sub)

È necessario utilizzare un valore di attributo di espressione per il parametro type.

begins_with (path, substr)

True se l'attributo specificato da path inizia con una particolare sottostringa.

Esempio: controlla se i primi caratteri dell'immagine frontale URL sonohttp://.

  • begins_with (Pictures.FrontView, :v_sub)

Il valore di attributo di espressione :v_sub è un segnaposto per http://.

contains (path, operand)

True se l'attributo specificato da path è uno dei seguenti:

  • un valore di tipo String che contiene una particolare sottostringa.

  • un valore di tipo Set che contiene un particolare elemento appartenente all'insieme.

  • Valore di tipo List che contiene un particolare elemento appartenente all'insieme.

Se l'attributo specificato da path è String, operand deve essere String. Se l'attributo specificato da path è un Set, l'operand deve essere il tipo di elemento del set.

Il percorso e l'operando devono essere distinti. Vale a dire, contains (a, a) restituisce un errore.

Esempio: Verifica se l'attributo Brand contiene la sottostringa Company.

  • contains (Brand, :v_sub)

Il valore di attributo di espressione :v_sub è un segnaposto per Company.

Esempio: Verifica se il prodotto è disponibile in rosso.

  • contains (Color, :v_sub)

Il valore di attributo di espressione :v_sub è un segnaposto per Red.

size (path)

Restituisce un numero che rappresenta le dimensioni di un attributo. I seguenti sono tipi di dati validi per l'utilizzo con size.

Se l'attributo è di tipo String, sizerestituisce la lunghezza della stringa.

Esempio: Verifica se la stringa Brand è inferiore o uguale a 20 caratteri. Il valore di attributo di espressione :v_sub è un segnaposto per 20.

  • size (Brand) <= :v_sub

Se l'attributo è di tipo Binary, size restituisce il numero di byte nel valore attributo.

Esempio: supponi che l'elemento ProductCatalog abbia un attributo di tipo binario denominato VideoClip, che contiene un breve video del prodotto in uso. L'espressione seguente verifica se VideoClip supera i 64.000 byte. Il valore di attributo di espressione :v_sub è un segnaposto per 64000.

  • size(VideoClip) > :v_sub

Se il tipo di dati dell'attributo è Set, size restituisce il numero di elementi nell'insieme.

Esempio: Verifica se il prodotto è disponibile in più di un colore. Il valore di attributo di espressione :v_sub è un segnaposto per 1.

  • size (Color) < :v_sub

Se il tipo dell'attributo è List o Map, size restituisce il numero di elementi figlio.

Esempio: Verifica se il numero di revisioni OneStar ha superato una certa soglia. Il valore di attributo di espressione :v_sub è un segnaposto per 3.

  • size(ProductReviews.OneStar) > :v_sub

Valutazioni logiche

Utilizza le parole chiave AND, OR e NOT per eseguire valutazioni logiche. Nell'elenco seguente, a e b rappresentano le condizioni da valutare.

  • a AND b— Vero se a e b sono entrambe vere.

  • a OR b— Vero se uno dei due a oppure b (o entrambe) sono vere.

  • NOT a— Vero se a è falso. Falso se a è vero.

Di seguito è riportato un esempio di codice di operazione AND in a.

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

Parentesi

Utilizza le parentesi per modificare la priorità di una valutazione logica. Si supponga, ad esempio, che le condizioni a e b sono vere e quella condizione c è falso. La seguente espressione restituisce true:

  • a OR b AND c

Tuttavia, se racchiudi una condizione tra parentesi, verrà valutata per prima. Ad esempio, la seguente espressione restituisce false:

  • (a OR b) AND c

Nota

Puoi annidare le parentesi in un'espressione: quelle più interne saranno valutate per prime.

Di seguito è riportato un esempio di codice con parentesi in una valutazione logica.

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

Priorità nelle condizioni

DynamoDB valuta le condizioni da sinistra a destra utilizzando le seguenti regole di precedenza:

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • Parentesi

  • NOT

  • AND

  • OR