Saltar al contenido

¿Es posible hacer una puesta o actualización condicional en DynamoDB?

Haz todo lo posible por comprender el código de forma correcta previamente a aplicarlo a tu trabajo si ttienes algo que aportar puedes decirlo en los comentarios.

Solución:

Lo que no mencioné en mi pregunta fue que quería el count subir para eventos posteriores sin modificar el created_at. Mi UpdateInput de trabajo final se ve así:


  Key: 
    id: 
      S: "some_unique_id"
    
  ,
  TableName: "test",
  ExpressionAttributeNames: 
    #t: "created_at",
    #c: "count"
  ,
  ExpressionAttributeValues: 
    :t: 
      S: "2015-09-26T15:58:57+12:00"
    ,
    :c: 
      N: "1"
    
  ,
  UpdateExpression: "SET #t = if_not_exists(#t, :t) ADD #c :c"

Puedes hacer esto con UpdateItem API y la UpdateExpression debido a su caso de uso. Ya que count será un Number escribe aquí, puedes usar el SET o ADD expresiones:

la documentación para ADD te dice que puedes usarlo para Number tipos (énfasis mío):

  • ADD – Agrega el valor especificado al elemento, si el attribute no existe ya. Si el attribute existe, entonces el comportamiento de ADD depende del tipo de datos del attribute:

    • Si el existente attribute es un número y si Valor también es un número, entonces Valor se suma matemáticamente a la existente attribute. Si Valor es un número negativo, entonces se resta del existente attribute.

    Si usa AGREGAR para incrementar o disminuir un valor numérico para un elemento que no existe antes de la actualización, DynamoDB usa 0 como valor inicial. De manera similar, si usa AGREGAR para un artículo existente para incrementar o disminuir un attribute valor que no existe antes de la actualización, DynamoDB utiliza 0 como valor inicial. Por ejemplo, suponga que el elemento que desea actualizar no tiene un attribute itemcount nombrado, pero usted decide AGREGAR el número 3 a este attribute de todas formas. DynamoDB creará el número de elementos attribute, establezca su valor inicial en 0 y finalmente agréguele 3. El resultado será un nuevo número de elementos. attribute en el artículo, con un valor de 3.

Para su ejemplo, podría tener su UpdateExpression ser ADD #c :ndonde :n tiene un ExpressionAttributeValue de El Number tipo, 1 es el valor y #c tiene el ExpressionAttributeName sustitución de count. Necesitas usar un marcador de posición para count porque es una palabra reservada.

Ver más ejemplos en el Modificación de elementos y atributos con expresiones de actualización

Valoraciones y reseñas

Recuerda comunicar esta crónica si si solucionó tu problema.

¡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 *