我试图在不指定索引的情况下向整个表添加一个属性。
在这个例子中,它总是被用作一个索引:
aws dynamodb update-item
--region MY_REGION
--table-name MY_TABLE_NAME
--key='{"AccountId": {"S": accountId}}'
--update-expression 'SET conf=:newconf'
--expression-attribute-values '{":newconf":{"S":"new conf value"}}'
此外,这是对表中已经存在的属性的更新。
如何为表的每条记录添加一个新属性?
没有API会自动将属性添加到表中的所有项。DynamoDB就是不能这样工作。
向表中的所有项添加属性的唯一方法是扫描表,并对每个项发出UpdateItem请求以添加所需的属性。这可以用于丢失的属性(即添加新属性(,或者已经存在且正在更新的属性。
一些注意事项:
- 如果表很小,并且不经常更新,那么这可能会在一次过程中按预期工作
- 如果表较大并且更新速度相对较快(即每秒更新一次(,则需要确保更新表的代码也将属性添加到新项目或正在更新的项目中,并且更新不会中断
- 最后,如果表很大,由于每个项目的扫描和更新,这可能会消耗大量容量,因此需要花很长时间来计划(还要注意消耗的容量与供应的容量(——最好对更新脚本进行一些速率限制