AttributeUpdates (heredado) - Amazon DynamoDB

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 use ADD 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 para DELETE. 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ón DELETE 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 de ADD depende del tipo de datos del atributo:

      • Si el atributo existente es un número y Value también es un número, entonces Value se suma matemáticamente al atributo existente. Si Value 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 aplicar ADD para sumar 3 a este atributo. DynamoDB creará el atributo itemcount, establecerá su valor inicial en 0 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ón ADD especifica [3], entonces el valor final del atributo es [1,2,3]. Se produce un error si se especifica una acción ADD 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"} }'