如何删除DynamoDB表中包含特定字符串匹配的项目?
问题描述:
我想删除表中的特定字符串匹配项。例如,Table1
在name
列中具有Foo123Bar
和Foo345Bar
。如何删除DynamoDB表中包含特定字符串匹配的项目?
我想删除name
列中的两个recs。
答
这是我如何解决这个问题,
您需要扫描表的条件,并用批量删除或删除项删除它们。
扫描和查询示例:
http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/dynamodb-example-query-scan.html
批量删除实施例:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#batchWriteItem-property
答
基于该名称列是否是主键,分类键或一个属性,你可以对d使用不同的方法选择该项目。
如果名称为列是主键,则可以使用BatchWriteItem直接删除多个项目。如果使用DynamoDB Document Client,则可以使用batchWrite
method删除表中的多个项目,如下所示。
var params = {
RequestItems: {
'Table1': [
{
DeleteRequest: {
Key: { name: 'Foo123Bar' }
}
},
{
DeleteRequest: {
Key: { name: 'Foo345Bar' }
}
}
]
}
};
var documentClient = new AWS.DynamoDB.DocumentClient();
documentClient.batchWrite(params, function(err, data) {
if (err) console.log(err);
else console.log(data);
});
如果名列不是私有密钥,但在索引中的排序关键字或可查询键,你需要查询和由一个寻找自己的主键和排序键一个删除项目使用deleteItem
method。
如果名称列是正常属性,则需要扫描和删除而不是查询。
使用DynamoDB Document Client您可以轻松地调用scan或query,并带有必需的参数。
你能提供什么是你的表中的主键和排序键吗? – Ashan