Я довольно новичок в DynamoDB и не могу найти ответ на довольно тривиальный сценарий.
Допустим, я собираю пользовательские покупки с использованием DynamoDB. Поэтому я храню moneySpent для каждого пользователя в день и lastPurchaseTime. Проблема в том, что сообщения о покупке, которые я получаю, не гарантированно будут заказаны ко времени покупки. Поэтому я хочу всегда добавлять newOrderPrice в moneySpent и обновлять lastPurchaseTime, только если оно больше текущего времени lastPurchase.
Итак, кто я. ищу что-то вроде этого:
table.update_item(
Key={
'user_id': userId,
'day': day
},
UpdateExpression="ADD moneySpent :moneySpent SET lastPurchaseTime =
MAX(lastPurchaseItem, :lastPurchaseTime)",
expressionAttributeValues={
':moneySpent': moneySpent
':lastPurchaseTime': lastPurchaseTime
}
ReturnValues="NONE"
)
ConditionExpression мне не помогает, так как conditionExpression обуславливает все выражение.
Единственное решение, которое я придумал, это сохранение набора всех покупок. и проверьте время последней покупки, когда я запрашиваю данные,
или выполняю два обновления, одно с условием, где lastPurchase>: lastPurchase, а другое с противоположным условием.