java - 如何通过传递 id 列表来删除 dynamodb 中的记录
问题描述
我正在尝试从 dynamodb 中删除多条记录。我想做类似的事情:
delete * from myTable where id in [1,2,3,4,5,6,7] and age = 10.
我想删除与我通过的列表中的 id 匹配且年龄也等于 10 的项目。如何在 Amazon dynamoDB 中执行此操作?
解决方案
内置BatchDeleteItem
批处理操作可以让您一次删除多个项目,使用以下模式来启用传递 ID 列表:
type YourTableItem {
id: ID!
SomeField: String
}
type Mutation {
batchDelete(ids: [ID]): [YourTableItem]
}
schema {
mutation: Mutation
}
batchDelete()
接下来,使用以下请求映射模板将解析器附加到字段:
#set($ids = [])
#foreach($id in ${ctx.args.ids})
#set($map = {})
$util.qr($map.put("id", $util.dynamodb.toString($id)))
$util.qr($ids.add($map))
#end
{
"version" : "2019-06-20",
"operation" : "BatchDeleteItem",
"tables" : {
"YourTable": $util.toJson($ids)
}
}
成功配置后,您可以简单地运行以下batchDelete突变:
mutation delete {
batchDelete(ids:[4,7]){ id }
}
它将相应地删除 ID 为 4 和 7 的记录。
我还建议您在此处阅读有关 DynamoDB Batch Resolvers 的官方教程。
推荐阅读
- python - 将 python 请求转换为 aiohttp 并为其添加错误处理
- android - 在 MoviesApp 上实现收藏夹功能
- mysql - Rails 5 API - 即使无法建立与数据库的连接,也加载静态页面
- c# - 如何在 Unity 中制作动画天空盒?
- c - Makefile:尽管所有文件都在那里
- html - 如何在同一行对齐标题和无序列表
- css - CSS:无法让滚动条出现在水平滚动 DIV 上
- c# - Azure 函数访问存储帐户
- python - PyQt5:QPolygonF 的中心线
- android - Exoplayer : 在设置 mediaitem/mediasource 之前启用 TimeBar 的scrubber