首页 > 解决方案 > 如何删除 DynamoDB 中的多行?

问题描述

我正在尝试从 DynamoDB 表中删除数据。

如果我使用分区键删除数据,它可以工作。

但是当我使用任何其他字段删除多行时,它会失败。

  var params = {
    TableName: "test",
    Key: {
      dmac: dmac,
    },
    ConditionExpression: "dmac= :dmac"
  };

  docClient.delete( params, (error) => {
    if (error) {
      console.log( "Delete data fail" );
    } else { 
      console.log( "Delete data Success" );
    }
  });

标签: node.jsamazon-web-servicesamazon-dynamodbdynamodb-queries

解决方案


DynamoDB 中的项目(或行)由其主键唯一标识。一个表可以有一个简单的主键(一个分区键)或一个复合主键(一个分区键加上一个排序键)。

要删除项目,您必须提供完整的主键(无论是简单分区键还是复合分区键加排序键)。

因此,如果您要删除满足特定条件的项目,例如 maxspeed < 120 的汽车,则发出查询或扫描以识别这些项目,检索主键,然后在第二次操作中删除这些项目。

要删除单个项目,请使用DeleteItem。要删除多个项目,请使用BatchWriteItem。尽管命名为BatchWriteItem,但它可用于放置多个项目或删除多个项目,并且您可以在同一个 API 调用中定位一个或多个 DynamoDB 表。


推荐阅读