现在,当用户调用我的lambda函数并添加新分数时。 在这种情况下,我必须更新新值大于旧值的字段。
示例: s1的当前值:6354,s10:1513,s1001:328
如果用户发送新值:s1:1000,s10:2000,s1001:4567
我希望将替换s1的分数并替换s10和s1001的值。所以表中项的新值必须是: s1:6354,s10:2000,s1001:4567
我阅读了AWS文档,但据我所知,当我检查更新的条件时,我只有2个选项:用新项替换当前项(updateItem时params中的哪个字段)或保留当前项。
那么,请告诉我这个问题有什么解决方法吗? 谢谢!
答案 0 :(得分:0)
假设您还在新键中使用了dynamodb中的新值,并且 temp 键中的先前值实际上在facebook Id字符串中,你可以在lambda中使用python这样做:
import boto3
dynamodb = boto3.client('dynamodb')
response_old = dynamodb.get_item(
TableName='test',
Key={'name': {'S': 'temp'}}
)
response_new = dynamodb.get_item(
TableName='test',
Key={'name': {'S': 'new'}}
)
olds1001=response_old['Item']['s1001']['N']
olds10=response_old['Item']['s10']['N']
olds1=response_old['Item']['s1']['N']
news1001=response_new['Item']['s1001']['N']
news10=response_new['Item']['s10']['N']
news1=response_new['Item']['s1']['N']
if (olds1001>news1001):
news1001=olds1001
if (olds10>news10):
news10=olds10
if (olds1>news1):
news1=olds1
dynamodb.put_item(
TableName='test',
Item={
'name': {'S': 'temp'},
's1': {'N': news1},
's10': {'N': news10},
's1001': {'N': news1001}
})
更新表将是这样的