在dynamo db中删除列的有效方法是什么,如果需要在创建表结构时将删除列设置为分区键
答案 0 :(得分:1)
正如其他答案所述,DynamoDB是一个NoSQL数据库。这意味着在创建表时,它只允许定义分区键(必需)和排序键(可选)。不需要定义所有其他非关键属性。即使您尝试定义非关键属性,也会抛出验证异常。
除了关键属性,每个项目(即记录)都可以拥有自己的属性。此外,DynamoDB不允许在非关键属性上具有null
或empty
值。如果该属性没有任何值,则它不能成为该项目的一部分。
如果您有一个属性并且想要将其从项目中删除,则可以在更新表达式上使用 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中添加该列的值。