AWS通过非主键删除项目

时间:2019-10-10 14:49:02

标签: amazon-dynamodb

我有一个问题,我真的不知道怎么问

我有这样的桌子

user table
-----------------------------------
UID (primary key) | name (another key)
-----------------------------------
a1c8d3            | Hugo
f9e2d7            | Thomas
s2c9d4            | Damien
metadata table
-----------------------------------
MID (primary key) | UID (another key)
-----------------------------------
c3d9d3            | a1c8d3
d8f1e6            | a1c8d3
d3j5c2            | f9e2d7

我有一个函数来获取用户表的所有UID,它们存储在数组中

当我删除该数组的用户时,我要删除元数据表中与已删除用户具有相同UID的项目

是否可以在不使用主键(此处为MID)的情况下删除元数据表中的项目?

还是我需要将元数据表的UID设置为全局二级索引?如果是,我该怎么办?

提前谢谢

最诚挚的问候

1 个答案:

答案 0 :(得分:2)

否。

DeleteItem()需要表的主键(docs

您需要查询元数据表,并删除具有匹配UID的行。

如果您还没有的话,建议您使用 哈希键= UID 排序键= MID

然后,使用您的示例数据的Query(GSI,hash = UID)将返回两行。 然后,您将为每个返回的行调用DeleteItem(Table,HashKey = MID)。

或者更好的是,同时收集两个删除内容,并以BatchWriteItem()的形式发送一次