Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Utilizzo delle espressioni di aggiornamento in DynamoDB

Modalità Focus
Utilizzo delle espressioni di aggiornamento in DynamoDB - 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à.

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

L'operazione UpdateItem aggiorna una voce esistente o aggiunge una nuova voce alla tabella, se non è già presente. È necessario fornire la chiave dell'elemento che intendi aggiornare. È necessario fornire inoltre un'espressione di aggiornamento che indica gli attributi che intendi modificare e i valori che intendi assegnargli.

Una espressione di aggiornamento specifica come UpdateItem modificherà gli attributi di un elemento, ad esempio impostando un valore scalare o rimuovendo elementi da un elenco o da una mappa.

Di seguito è riportato un riepilogo della sintassi delle espressioni di aggiornamento.

update-expression ::= [ SET action [, action] ... ] [ REMOVE action [, action] ...] [ ADD action [, action] ... ] [ DELETE action [, action] ...]

Un'espressione di aggiornamento comprende una o più clausole. Ogni clausola inizia con una parola chiave SET, REMOVE, ADD o DELETE. Puoi includere qualsiasi di queste clausole in un'espressione di aggiornamento, in qualsiasi ordine. Tuttavia, ciascuna parola chiave dell'operazione può comparire una sola volta.

All'interno di ogni clausola esistono una o più operazioni separate da virgole. Ciascuna operazione rappresenta una modifica di dati.

Gli esempi in questa sezione si basano sull'elemento ProductCatalog illustrato in Utilizzo delle espressioni di proiezione in DynamoDB.

Gli argomenti seguenti illustrano diversi casi d'uso dell'operazione SET.

SET: modifica o aggiunta di attributi dell'elemento

Utilizza l'operazione SET in un'espressione di aggiornamento per aggiungere uno o più attributi a un elemento. Se alcuni di questi attributi esistono già, vengono sovrascritti dai nuovi valori. Se intendi evitare la sovrascrittura di un attributo esistente, puoi utilizzare SET con la funzione if_not_exists. La funzione if_not_exists è specifica dell'operazione SET e può essere utilizzata solo in un'espressione di aggiornamento.

Quando utilizzi SET per aggiornare un elemento dell'elenco, i contenuti dell'elemento vengono sostituiti con i nuovi dati specificati. Se l'elemento non esiste ancora, SET aggiunge il nuovo elemento alla fine dell'elenco.

Se aggiungi più elementi in un'unica operazione SET, gli elementi verranno ordinati per numero di elemento.

Puoi inoltre utilizzare SET per aggiungere o sottrarre un attributo di tipo Number. Per eseguire più operazioni SET, separarle con virgole.

Nel riepilogo della sintassi seguente:

  • L'pathelemento è il percorso del documento verso l'elemento.

  • Un operandelemento può essere il percorso del documento verso un elemento o una funzione.

set-action ::= path = value value ::= operand | operand '+' operand | operand '-' operand operand ::= path | function function ::= if_not_exists (path, value)

Se l'elemento non contiene un attributo nel percorso specificato, if_not_exists restituisce avalue. In caso contrario, restituisce. path

L'operazione PutItem seguente crea un elemento di esempio a cui gli esempi fanno riferimento.

aws dynamodb put-item \ --table-name ProductCatalog \ --item file://item.json

Gli argomenti per --item sono memorizzati nel file item.json: (Per semplicità, vengono utilizzati solo pochi attributi dell'item).

{ "Id": {"N": "789"}, "ProductCategory": {"S": "Home Improvement"}, "Price": {"N": "52"}, "InStock": {"BOOL": true}, "Brand": {"S": "Acme"} }

Modifica degli attributi

Esempio

Aggiorna gli attributi ProductCategory e Price.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET ProductCategory = :c, Price = :p" \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":c": { "S": "Hardware" }, ":p": { "N": "60" } }
Nota

Nell'operazione UpdateItem, --return-values ALL_NEW fa in modo che DynamoDB restituisca l'elemento come compare dopo l'aggiornamento.

Aggiunta di elenchi e mappe

Esempio

Aggiungi un nuovo elenco e una nuova mappa.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET RelatedItems = :ri, ProductReviews = :pr" \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":ri": { "L": [ { "S": "Hammer" } ] }, ":pr": { "M": { "FiveStar": { "L": [ { "S": "Best product ever!" } ] } } } }

Aggiunta di elementi a un elenco

Esempio

Aggiungi un nuovo attributo all'elenco RelatedItems. Ricorda che gli elementi dell'elenco sono a base zero, ovvero [0] rappresenta il primo elemento nell'elenco, [1] il secondo e così via.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET RelatedItems[1] = :ri" \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":ri": { "S": "Nails" } }
Nota

Quando utilizzi SET per aggiornare un elemento dell'elenco, i contenuti dell'elemento vengono sostituiti con i nuovi dati specificati. Se l'elemento non esiste ancora, SET aggiunge il nuovo elemento alla fine dell'elenco.

Se aggiungi più elementi in un'unica operazione SET, gli elementi verranno ordinati per numero di elemento.

Aggiunta di attributi di mappa nidificati

Esempio

Aggiungi alcuni attributi di mappa nidificati.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET #pr.#5star[1] = :r5, #pr.#3star = :r3" \ --expression-attribute-names file://names.json \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

Gli argomenti per --expression-attribute-names sono memorizzati nel file names.json:

{ "#pr": "ProductReviews", "#5star": "FiveStar", "#3star": "ThreeStar" }

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":r5": { "S": "Very happy with my purchase" }, ":r3": { "L": [ { "S": "Just OK - not that great" } ] } }

Incremento e decremento di attributi numerici

Puoi eseguire aggiunte o sottrazioni da un attributo numerico esistente. A questo scopo, utilizza gli operatori + (più) e - (meno).

Esempio

Riduci il valore Price di un elemento.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET Price = Price - :p" \ --expression-attribute-values '{":p": {"N":"15"}}' \ --return-values ALL_NEW

Per aumentare il valore Price, puoi utilizzare l'operatore + nell'espressione di aggiornamento.

Aggiunta di elementi a un elenco

Puoi aggiungere elementi alla fine di un elenco. A tale scopo, utilizza SET con la funzione list_append. Il nome funzione rileva la distinzione tra maiuscole e minuscole. La funzione list_append è specifica dell'operazione SET e può essere utilizzata solo in un'espressione di aggiornamento. La sintassi è esposta di seguito.

  • list_append (list1, list2)

La funzione prende due liste come input e aggiunge tutti gli elementi da list2 a list1.

Esempio

In Aggiunta di elementi a un elenco, viene creato l'elenco RelatedItems e popolato con due elementi: Hammer e Nails. Vengono quindi aggiunti due altri elementi alla fine di RelatedItems.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET #ri = list_append(#ri, :vals)" \ --expression-attribute-names '{"#ri": "RelatedItems"}' \ --expression-attribute-values file://values.json \ --return-values ALL_NEW

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":vals": { "L": [ { "S": "Screwdriver" }, {"S": "Hacksaw" } ] } }

Infine, viene aggiunto un ulteriore elemento all'inizio di RelatedItems. A questo scopo, scambia l'ordine degli elementi list_append. Ricorda che list_append accetta due elenchi come input e aggiunge il secondo elenco al primo.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET #ri = list_append(:vals, #ri)" \ --expression-attribute-names '{"#ri": "RelatedItems"}' \ --expression-attribute-values '{":vals": {"L": [ { "S": "Chisel" }]}}' \ --return-values ALL_NEW

L'attributo RelatedItems risultante contiene ora cinque elementi nell'ordine seguente: Chisel, Hammer, Nails, Screwdriver, Hacksaw.

Prevenzione delle sovrascritture di un attributo esistente

Esempio

Imposta l'attributo Price di un elemento, ma solo se l'elemento non dispone già di un attributo Price. Se l'attributo Price esiste già, non accade nulla.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET Price = if_not_exists(Price, :p)" \ --expression-attribute-values '{":p": {"N": "100"}}' \ --return-values ALL_NEW

REMOVE: eliminazione degli attributi da un elemento

Utilizza l'operazione REMOVE in una espressione di aggiornamento per rimuovere uno o più attributi di un elemento in Amazon DynamoDB. Per eseguire più operazioni REMOVE, separarle con virgole.

Di seguito è riportato un riepilogo della sintassi di REMOVE in un'espressione di aggiornamento. L'unico operando è il percorso di documento dell'attributo che intendi rimuovere.

remove-action ::= path
Esempio

Rimuovi alcuni attributi di un elemento. Se gli attributi non esistono, non accade nulla.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "REMOVE Brand, InStock, QuantityOnHand" \ --return-values ALL_NEW

Rimozione di elementi da un elenco

Puoi utilizzare REMOVE per eliminare singoli elementi da un elenco.

Esempio

In Aggiunta di elementi a un elenco, modifica un attributo di elenco (RelatedItems) in modo che contenga cinque elementi:

  • [0]Chisel

  • [1]Hammer

  • [2]Nails

  • [3]Screwdriver

  • [4]Hacksaw

L'esempio seguente AWS Command Line Interface (AWS CLI) elimina Hammer e Nails dall'elenco.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "REMOVE RelatedItems[1], RelatedItems[2]" \ --return-values ALL_NEW

Dopo che Hammer e Nails sono stati rimossi, gli elementi rimanenti vengono spostati. Ora l'elenco contiene quanto segue:

  • [0]Chisel

  • [1]Screwdriver

  • [2]Hacksaw

ADD: aggiornamento di numeri e set

Nota

In generale, consigliamo di utilizzare SET anziché ADD.

Utilizza l'operazione ADD in un'espressione di aggiornamento per aggiungere un nuovo attributo e i suoi valori a un elemento.

Se l'attributo esiste già, il comportamento di ADD dipende dal tipo di dati dell'attributo:

  • Se l'attributo è un numero e anche il valore da aggiungere è un numero, il valore viene aggiunto matematicamente all'attributo esistente. Se il valore è un numero negativo, viene sottratto dall'attributo esistente.

  • Se l'attributo è un set e anche il valore da aggiungere è un set, il valore viene aggiunto matematicamente al set esistente.

Nota

L'operazione ADD supporta solo i tipi di dati Number e Set.

Per eseguire più operazioni ADD, separarle con virgole.

Nel riepilogo della sintassi seguente:

  • L'pathelemento è il percorso del documento verso un attributo. L'attributo deve essere un tipo di dati Number o Set.

  • L'valueelemento è un numero che si desidera aggiungere all'attributo (per Number i tipi di dati) o un set da aggiungere all'attributo (per i tipi di set).

add-action ::= path value

Gli argomenti seguenti illustrano diversi casi d'uso dell'operazione ADD.

Aggiunta di un numero

Supponiamo che l'attributo QuantityOnHand non esista. L' AWS CLI esempio seguente è impostato QuantityOnHand su 5.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "ADD QuantityOnHand :q" \ --expression-attribute-values '{":q": {"N": "5"}}' \ --return-values ALL_NEW

Ora che QuantityOnHand esiste, puoi eseguire nuovamente l'esempio per incrementare QuantityOnHand ogni volta di 5.

Aggiunta di elementi a un set

Supponiamo che l'attributo Color non esista. L'esempio AWS CLI seguente imposta Color su un set di stringhe con due elementi.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "ADD Color :c" \ --expression-attribute-values '{":c": {"SS":["Orange", "Purple"]}}' \ --return-values ALL_NEW

Ora che Color esiste, puoi aggiungergli più elementi:

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "ADD Color :c" \ --expression-attribute-values '{":c": {"SS":["Yellow", "Green", "Blue"]}}' \ --return-values ALL_NEW

DELETE: rimozione di elementi da un set

Importante

L'operazione DELETE supporta solo i tipi di dati Set.

Utilizza l'operazione DELETE in un'espressione di aggiornamento per rimuovere uno o più elementi da un set. Per eseguire più operazioni DELETE, separarle con virgole.

Nel riepilogo della sintassi seguente:

  • L'pathelemento è il percorso del documento verso un attributo. L'attributo deve essere un tipo di dati Set.

  • subsetÈ uno o più elementi da cui si desidera eliminarepath. È necessario specificare subset come tipo di set.

delete-action ::= path subset
Esempio

In Aggiunta di elementi a un set, crea lo String Set Color. In questo esempio vengono rimossi alcuni elementi di tale set.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "DELETE Color :p" \ --expression-attribute-values '{":p": {"SS": ["Yellow", "Purple"]}}' \ --return-values ALL_NEW

Utilizzo di più espressioni di aggiornamento

Puoi utilizzare più espressioni di aggiornamento in una singola istruzione.

Se vuoi modificare il valore di un attributo e rimuovere completamente un altro attributo, puoi utilizzare le operazioni SET e REMOVE in una singola istruzione. Questa operazione imposta il valore di Price su 15 e rimuove l'attributo InStock dall'elemento.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET Price = Price - :p REMOVE InStock" \ --expression-attribute-values '{":p": {"N":"15"}}' \ --return-values ALL_NEW

Se desideri aggiungere una voce a un elenco modificando anche il valore di un attributo, puoi utilizzare due operazioni SET in una singola istruzione. Questa operazione aggiunge "Nails" all'attributo di elenco RelatedItems e imposta il valore di Price su 21.

aws dynamodb update-item \ --table-name ProductCatalog \ --key '{"Id":{"N":"789"}}' \ --update-expression "SET RelatedItems[1] = :newValue, Price = :newPrice" \ --expression-attribute-values '{":newValue": {"S":"Nails"}, ":newPrice": {"N":"21"}}' \ --return-values ALL_NEW
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.