DynamoDB中的项(或行)由其主键唯一标识。表可以有一个简单的主键(即一个分区键)或一个复合主键(即一个分区键加上一个排序键)。
要删除一项,必须提供完整的主键(无论是简单的分区键还是复合分区键加排序键)。
因此,如果您想删除符合特定条件的项,例如最大速度小于120的汽车,则应发出查询或扫描以识别这些项,检索主键,然后在第二个操作中删除这些项。
要删除单个项,请使用DeleteItem。要删除多个项,请使用BatchWriteItem。尽管名为BatchWriteItem
,但它可用于放置多个项或删除多个项,并且您可以在同一个API调用中针对一个或多个DynamoDB表。
以下是AWS SDK v2删除多个项的示例:
const aws = require("aws-sdk");
const ddb = new aws.DynamoDB({ region: "us-east-1" });
(async () => {
const params = {
RequestItems: {
albums: []
}
};
params.RequestItems.albums.push({
DeleteRequest: {
Key: {
pk: { S: "The Who" },
sk: { S: "Tommy" }
}
}
});
params.RequestItems.albums.push({
DeleteRequest: {
Key: {
pk: { S: "The Beatles" },
sk: { S: "Abbey Road" }
}
}
});
await ddb.batchWriteItem(params).promise();
})();
这是一个AWS SDK v3删除多个项的示例:
const {
BatchWriteItemCommand,
DynamoDBClient
} = require("@aws-sdk/client-dynamodb");
(async () => {
const client = new DynamoDBClient({ region: "us-east-1" });
const params = {
RequestItems: {
albums: []
}
};
params.RequestItems.albums.push({
DeleteRequest: {
Key: {
pk: { S: "The Who" },
sk: { S: "Tommy" }
}
}
});
params.RequestItems.albums.push({
DeleteRequest: {
Key: {
pk: { S: "The Beatles" },
sk: { S: "Abbey Road" }
}
}
});
await client.send(new BatchWriteItemCommand(params));
})();