Saltar al contenido

¿Cómo actualizar un mapa o una lista en la API de documentos de AWS DynamoDB?

Solución:

Eche un vistazo a UpdateExpression en la API UpdateItem

Por ejemplo, dado un artículo con una lista:

{
    "hashkey": {"S" : "my_key"},
    "my_list" : {"L": 
        [{"N":"3"},{"N":"7"} ]
}

Puede actualizar la lista con un código como el siguiente:

UpdateItemRequest request = new UpdateItemRequest();
request.setTableName("myTableName");
request.setKey(Collections.singletonMap("hashkey", 
    new AttributeValue().withS("my_key")));
request.setUpdateExpression("list_append(:prepend_value, my_list)");
request.setExpressionAttributeValues(
    Collections.singletonMap(":prepend_value", 
        new AttributeValue().withN("1"))
    );
dynamodb.updateItem(request);`

También puede agregar a la lista invirtiendo el orden de los argumentos en la expresión list_append.

Una expresión como: SET user.address.zipcode = :zip abordaría un elemento de mapa JSON combinado con valores de atributo de expresión {":zip" : {"N":"12345"}}

Basado en ejemplos de DynamoDB, esto también funciona (scala)

val updateItemSpec:UpdateItemSpec = new UpdateItemSpec()
    .withPrimaryKey("hashkey", my_key)
  .withUpdateExpression("set my_list = list_append(:prepend_value, my_list)")
  .withValueMap(new ValueMap()
      .withList(":prepend_value", "1"))
  .withReturnValues(ReturnValue.UPDATED_NEW)
println("Updating the item...")
val outcome: UpdateItemOutcome = table.updateItem(updateItemSpec)
println("UpdateItem succeeded:n" + outcome.getItem.toJSONPretty)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *