Состояние элемента обновления DynamoDB - PullRequest
0 голосов
/ 08 февраля 2020

Я довольно новичок в 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, а другое с противоположным условием.

1 Ответ

0 голосов
/ 08 февраля 2020

Это очень похоже на эту проблему: Как условно выполнить операцию SET в DynamoDB

В итоге я сделал два обновления: (*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...