Est-il possible de faire une condition de vente ou de mise à jour dans DynamoDB?
Disons que je suis le stockage des documents, avec la structure suivante dans DynamoDB:
{
"id": "57cf5b43-f9ec-4796-9de6-6a50f556cfd8",
"created_at": "2015-09-18T13:27:00+12:00",
"count": 3
}
Maintenant, est-il possible d'atteindre les objectifs suivants dans une requête:
- si l'enregistrement avec le
id
n'existe pas, il doit être créé avec count = 1 - si l'enregistrement pour que
id
existe le compteur est mis à jour.
Actuellement, je fais une requête pour vérifier si le dossier existe et selon le résultat je fais un put
ou un update
. Il serait bien de le plier pour en une seule opération.
OriginalL'auteur Piotr Zurek | 2015-09-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire cela avec
UpdateItem
de l'API et de l'UpdateExpression
en raison de votre cas d'utilisation. Depuiscount
sera unNumber
type ici, vous pouvez utiliser leSET
ouADD
expressions:La documentation pour
ADD
vous dit que vous pouvez l'utiliser pourNumber
types (l'emphase est mienne):Pour votre exemple, vous pourriez avoir votre
UpdateExpression
êtreADD #c :n
, où:n
a unExpressionAttributeValue
de laNumber
type,1
est la valeur, et#c
a laExpressionAttributeName
de substitution pourcount
. Vous avez besoin d'utiliser un espace réservé pourcount
parce que c'est un mot réservé.Voir plus d'exemples sur les Modification des Éléments et des Attributs avec la mise à Jour des Expressions
OriginalL'auteur mkobit
Ce que je n'ai pas mentionné dans ma question, c'était que je voulais que le
count
aller jusqu'pour la suite des événements, sans modifier lecreated_at
.Mon travail final UpdateInput ressemble à ça:
upsert
opération.OriginalL'auteur Piotr Zurek