如何通过传递ID列表来删除dynamodb中的记录

时间:2019-06-20 22:01:59

标签: java amazon-dynamodb

我正试图从dynamodb删除多个记录。 我想做类似的事情:

delete * from myTable where id in [1,2,3,4,5,6,7] and age = 10.

我想删除与我通过的列表中的ID匹配且年龄也等于10的项目。如何在Amazon dynamoDB中做到这一点?

1 个答案:

答案 0 :(得分:0)

内置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批处理解析器here的官方教程。