如何删除DynamoDB表中包含特定字符串匹配的项目?

问题描述:

我想删除表中的特定字符串匹配项。例如,Table1name列中具有Foo123BarFoo345Bar如何删除DynamoDB表中包含特定字符串匹配的项目?

我想删除name列中的两个recs。

+0

你能提供什么是你的表中的主键和排序键吗? – Ashan

这是我如何解决这个问题,

您需要扫描表的条件,并用批量删除或删除项删除它们。

扫描和查询示例:

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,则可以使用batchWritemethod删除表中的多个项目,如下所示。

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); 
}); 

如果列不是私有密钥,但在索引中的排序关键字或可查询键,你需要查询和由一个寻找自己的主键和排序键一个删除项目使用deleteItemmethod

如果名称列是正常属性,则需要扫描删除而不是查询。

使用DynamoDB Document Client您可以轻松地调用scanquery,并带有必需的参数。

+0

谢谢阿山,但名称不是关键,我只是想删除唯一的项目值,上面的是删除整个记录。如何指定条件请在此帮助 – Nathon

+0

然后,您需要扫描并有条件地匹配名称以查找记录,找到该记录后,可以使用该键将其删除。否则,您可以创建全局二级索引以快速找到要删除的项目及其关键字。 – Ashan