我有一个具有以下结构的 dynamodb 表:
{
accountId: string,//PRIMARY KEY
userId: string,//SORT KEY
email: string,
dateCreated: number // timestamp
}
Run Code Online (Sandbox Code Playgroud)
我想执行一项操作,从表中删除具有重复电子邮件的所有项目,但具有最旧 dateCreated 属性的项目除外。
在 DynamoDB 中可以执行此操作吗?
谢谢
首先,您需要分区键和排序键才能从 DynamoDB 中删除项目。除非,您知道accountIdand userId,否则您无法执行删除项目操作。
在上述用例中,无论是email还是dateCreated属性都不是关键属性的一部分。
此外,排序功能仅适用于排序键属性。
方法一:-
如果是一次性活动,则首选
dateCreated客户端识别旧值accountId和删除DynamoDB上的数据userId方法2:-
如果经常需要,首选一个
创建一个具有哈希键作为email和排序键作为的 GSIdateCreated
假设您知道要查询的电子邮件 ID 并确定它是否有重复项,您可以使用索引名称、电子邮件 ID 值和值为 false(即降序)的Query APIScanIndexForward
结果集的顶部将包含带有最新记录的电子邮件 ID。您可以忽略上面记录并运行删除API以accountId和userId为项目的其余部分。
方法三:-
如果数据可以在平面文件中管理并运行一些程序来查找重复项,则首选方法
方法4:-
数据量大时的首选方法
笔记:-
请注意,如果你期待像SQL与子查询来识别最新更新的记录,并删除其余,这是不是可能在DynamoDB
| 归档时间: |
|
| 查看次数: |
3888 次 |
| 最近记录: |