我有一个具有以下结构的dynamodb表:
{
accountId: string,//PRIMARY KEY
userId: string,//SORT KEY
email: string,
dateCreated: number // timestamp
}
我想执行一项操作,删除表中包含重复电子邮件的所有项目,但具有最早dateCreated属性的项目除外。
DynamoDB中是否可以执行此操作?
由于
答案 0 :(得分:2)
首先,您需要分区和排序键才能从DynamoDB中删除项目。除非您知道accountId
和userId
,否则您无法执行删除项操作。
在上述用例中,email
和dateCreated
属性都不是关键属性的一部分。
此外,排序功能仅适用于排序键属性。
方法1: -
首选一次性活动
dateCreated
accountId
和userId
方法2: -
首选经常需要
使用散列密钥email
创建GSI,并将密钥排序为dateCreated
假设您知道要查询的电子邮件ID并确定其是否有重复项,您可以将查询API 与索引名称,电子邮件ID值和ScanIndexForward
结合使用值为false(即降序)
结果集的电子邮件ID将在顶部显示最新记录。您可以忽略热门记录,并使用accountId
和userId
为其余项目运行删除API 。
方法3: -
首选方法,如果数据可以在平面文件中管理并运行某些程序以查找重复项
方法4: -
如果数据很大,则为首选方法
注意: - 强>
请注意,如果您希望使用带有子查询的SQL之类的内容来识别最新更新的记录并删除其余记录,那么在DynamoDB上不