AttributeUpdates (heredado)
nota
Le recomendamos que utilice los nuevos parámetros de expresión en lugar de estos parámetros heredados siempre que sea posible. Para obtener más información, consulte Uso de expresiones en DynamoDB. Para obtener información específica sobre el nuevo parámetro que reemplaza a este, Use UpdateExpression en su lugar..
En una operación UpdateItem
, el parámetro condicional heredado AttributeUpdates
contiene los nombres de los atributos que se van a modificar, su nombre, la acción que se va a llevar a cabo y su nuevo valor. Si va a actualizar un atributo de clave de índice de alguno de los índices de esa tabla, el tipo de atributo debe coincidir con el tipo de clave de índice definido en el elemento AttributesDefinition
de la descripción de la tabla. Puede utilizar UpdateItem
para actualizar los atributos sin clave.
Los valores de los atributos no pueden ser null. La longitud de los atributos de tipo String (cadena) y Binary (binario) debe ser mayor que cero. Los atributos de tipo Set (conjunto) no pueden estar vacíos. Las solicitudes con valores vacíos se rechazan con la excepción ValidationException
.
Cada entrada AttributeUpdates
consta de un nombre de atributo que se va a modificar, junto con lo siguiente:
-
Value
: el nuevo valor, si procede, de este atributo. -
Action
: un valor que especifica cómo llevar a cabo la actualización. Esta acción solo es válida para un atributo existente cuyo tipo de datos sea Number o que sea un conjunto; no useADD
con otros tipos de datos.Si se encuentra en la tabla un elemento con la clave principal especificada, los valores siguientes llevan a cabo estas acciones:
-
PUT
: añade el atributo especificado al elemento. Si el atributo ya existe, se sustituye por el nuevo valor. -
DELETE
: elimina el atributo y su valor, si no se ha especificado ningún valor paraDELETE
. El tipo de datos del valor especificado debe coincidir con el tipo de datos del valor existente.Si se especifica un conjunto de valores, entonces esos valores se restarán del conjunto anterior. Por ejemplo, si el valor de atributo era el conjunto
[a,b,c]
y la acciónDELETE
especifica[a,c]
, entonces el valor final del atributo es[b]
. Especificar un conjunto vacío es un error. -
ADD
: si el atributo aún no existe, añade el valor especificado al elemento. Si el atributo existe, el comportamiento deADD
depende del tipo de datos del atributo:-
Si el atributo existente es un número y
Value
también es un número, entoncesValue
se suma matemáticamente al atributo existente. SiValue
es un número negativo, entonces se resta del atributo existente.nota
Si utiliza
ADD
para sumar o restar de un valor numérico de un elemento que no existía antes de la actualización, DynamoDB utilizará 0 como valor inicial.De igual forma, si utiliza
ADD
con un elemento existente para sumar o restar de un valor de un atributo que no existía antes de la actualización, DynamoDB utilizará0
como valor inicial. Por ejemplo, supongamos que el elemento que desea actualizar no tiene un atributo denominado itemcount, pero que, a pesar de ello, usted decide aplicarADD
para sumar3
a este atributo. DynamoDB creará el atributo itemcount, establecerá su valor inicial en0
y, por último, le sumará3
. El resultado será un nuevo atributo itemcount, cuyo valor será3
. -
Si el tipo de datos existente es un conjunto y, además,
Value
también es un conjunto,Value
se adjunta al conjunto existente. Por ejemplo, si el valor del atributo es el conjunto[1,2]
y la acciónADD
especifica[3]
, entonces el valor final del atributo es[1,2,3]
. Se produce un error si se especifica una acciónADD
para un atributo de tipo Set y el tipo de atributo especificado no coincide con el tipo de conjunto existente.Ambos conjuntos deben tener el mismo tipo de datos primitivo. Por ejemplo, si el tipo de datos existente es un conjunto de cadenas,
Value
también debe ser un conjunto de cadenas.
-
Si no se encuentra en la tabla ningún elemento con la clave especificada, los valores siguientes llevan a cabo estas acciones:
-
PUT
: hace que DynamoDB cree un nuevo elemento con la clave principal especificada y, a continuación, agrega el atributo. -
DELETE
: no sucede nada, porque no se pueden eliminar los atributos de un elemento que no existe. La operación se lleva a cabo, pero DynamoDB no crea ningún elemento nuevo. -
ADD
: hace que DynamoDB cree un elemento con la clave principal y el número (o el conjunto de números) suministrados para el valor del atributo. Los únicos tipos de datos permitidos son Number y Number Set.
-
Si proporciona atributos que forman parte de una clave de índice, entonces los tipos de datos de tales atributos deberán coincidir con los del esquema de la definición de atributos de la tabla.
Use UpdateExpression en su lugar; ejemplo
Supongamos que desea modificar un elemento de la tabla Music. Podría usar una solicitud UpdateItem
con un parámetro AttributeUpdates
como en este ejemplo de la AWS CLI:
aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --attribute-updates '{ "Genre": { "Action": "PUT", "Value": {"S":"Rock"} } }'
Puede utilizar UpdateExpression
en su lugar:
aws dynamodb update-item \ --table-name Music \ --key '{ "SongTitle": {"S":"Call Me Today"}, "Artist": {"S":"No One You Know"} }' \ --update-expression 'SET Genre = :g' \ --expression-attribute-values '{ ":g": {"S":"Rock"} }'