如何删除 DynamoDB 多个键?
How to delete DynamoDB multiple key's?
- 我有 dynamodb table
- 我需要从所有项目中删除 2 个键(类型、代码),并在每个项目中更新另一个键(消息)
- id 是分区键
- 如果我的类型仅为“失败”,如何从每个项目中删除属性
type
?
- 没有条件
code
应该从每一项中删除
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('test-table')
result = table.scan()
scan_response = result.copy()
while 'LastEvaluatedKey' in result:
result = table.scan(ExclusiveStartKey=result['LastEvaluatedKey'])
scan_response['Items'].extend(result['Items'])
for each in scan_response['Items']:
table.update_item(
Key={
'id': each['id']
},
AttributeUpdates={
'msg': {
'Value': ''
},
}
)
table.update_item(
Key={
'id': each['id']
},
UpdateExpression='REMOVE type, code'
)
以上代码工作正常,我可以删除类型和代码并更新每个项目的消息
文档说我不能一次完成操作(UpdateExpression、AttributeUpdates)
更改您的更新表达式以包括设置 msg.Value 属性 和删除类型和代码:
UpdateExpression='REMOVE type, code SET msg.Value = ""'
- 我有 dynamodb table
- 我需要从所有项目中删除 2 个键(类型、代码),并在每个项目中更新另一个键(消息)
- id 是分区键
- 如果我的类型仅为“失败”,如何从每个项目中删除属性
type
? - 没有条件
code
应该从每一项中删除
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('test-table')
result = table.scan()
scan_response = result.copy()
while 'LastEvaluatedKey' in result:
result = table.scan(ExclusiveStartKey=result['LastEvaluatedKey'])
scan_response['Items'].extend(result['Items'])
for each in scan_response['Items']:
table.update_item(
Key={
'id': each['id']
},
AttributeUpdates={
'msg': {
'Value': ''
},
}
)
table.update_item(
Key={
'id': each['id']
},
UpdateExpression='REMOVE type, code'
)
以上代码工作正常,我可以删除类型和代码并更新每个项目的消息
文档说我不能一次完成操作(UpdateExpression、AttributeUpdates)
更改您的更新表达式以包括设置 msg.Value 属性 和删除类型和代码:
UpdateExpression='REMOVE type, code SET msg.Value = ""'