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

标签 java amazon-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 的官方教程 here .

关于java - 如何通过传递 id 列表来删除 dynamodb 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694435/

相关文章:

Java Applet 在没有 main 方法的情况下运行?

Java + Redis 与纯 Java 数据密集型应用程序的效率对比?

java - 通过 JMS 发送的 XML 消息 (JAXB) 为空

java - 如何使用DynamoDBMapper批量保存实体跳过空属性

python - Dynamodb 最大值

c# - 在 C# 中使用 DynamoDB 原子递增计数器字段

amazon-web-services - amazon dynamodb 中的分区键和排序键有什么区别?

java - 处理多种文件格式的转换,避免耦合

java - 解析 csv 时保留引号

node.js - 如何在不使用 Node-js 中的 Scan 的情况下从 Dynamo-Db 读取单个列?