如何删除dynamodb中的列(nodejs)

时间:2017-05-28 16:21:55

标签: node.js amazon-dynamodb

在dynamo db中删除列的有效方法是什么,如果需要在创建表结构时将删除列设置为分区键

3 个答案:

答案 0 :(得分:1)

正如其他答案所述,DynamoDB是一个NoSQL数据库。这意味着在创建表时,它只允许定义分区键(必需)和排序键(可选)。不需要定义所有其他非关键属性。即使您尝试定义非关键属性,也会抛出验证异常。

除了关键属性,每个项目(即记录)都可以拥有自己的属性。此外,DynamoDB不允许在非关键属性上具有nullempty值。如果该属性没有任何值,则它不能成为该项目的一部分。

如果您有一个属性并且想要将其从项目中删除,则可以在更新表达式上使用 REMOVE 关键字。

  

删除 - 从项目中删除一个或多个属性。

示例: -

以下示例从项目中删除info属性。

var params = {
    TableName:table,
    Key:{
        "year": year,
        "title": title
    },
    UpdateExpression: "remove info",
    ReturnValues:"UPDATED_NEW"
};

docClient.update(params, function(err, data) {
    if (err) {
        console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
    }
});

答案 1 :(得分:0)

Dynamo db不是SQL数据库(柱状数据库)而是NoSql数据库,唯一用于从dynamo db中删除列的是

1.从原始表创建备份表 2.创建从原始模型中删除参数的另一个模型(用于3.在原始表中存储数据)。 4.删除原始表格。 5.创建一个新表。 6.从原始模型中的备份表中获取数据。 7.将原始模型中的数据转换为新模型(删除列) 8.使用New Model将数据插入新表中。

如果备份表中的数据很高,则使用分页从原始数据中获取数据。

答案 2 :(得分:0)

dynamo db是schema less,对key属性是严格的。如果您的列是非关键属性,那么根据我的想法,不需要列删除。只有您不需要在输入json中添加该列的值。