我一直在浏览AWS Dynamo数据库文档和Amazon Dynamo界面,似乎没有办法从表中删除列,除非用它删除整个表&#39 ; s的内容并重新开始,是真的吗?
如果是这样,亚马逊为什么不支持这个呢?
答案 0 :(得分:4)
DynamoDB API中有一个REMOVE操作。参考:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html#Expressions.Modifying.UpdateExpressions.REMOVE。
答案 1 :(得分:3)
尝试从该列中删除所有数据,它会自动删除该列。
答案 2 :(得分:2)
使用带有javascript的文档客户端,我们可以这样做:
const paramsUpdate = {
TableName: tableName,
Key: { HashKey: 'hashKey' },
UpdateExpression: 'remove #c ',
ExpressionAttributeNames: { '#c': 'columnName' }
};
documentClient.update(paramsUpdate, (errUpdate) => {
if (errUpdate) log.error(errUpdate);
});
在这里,我们使用删除句子设置 UpdateExpression
答案 3 :(得分:1)
将列值的所有实例设置为null将清除列。
在C#中,此方法使用持久性框架来实现:
static void RemoveColumn()
{
var myItems = context.ScanAsync<MyObjectType>(null).GetRemainingAsync().Result;
// Foreach item, update
myItems.ForEach(myObject =>
{
myObject.UnwantedColumn = null;
context.Save(myObject);
});
}
答案 4 :(得分:0)
DynamoDB没有架构定义,因此不存在“列”之类的内容。这也意味着在不遍历每条记录的情况下无法删除具有相同名称的所有属性。
我建议的解决方案是保留这些属性,并使用新的属性名称使代码引用相同的数据。
例如,属性content
可能变为content_v2
。它看起来可能不太干净,但是便宜,快速,并且您的旧数据将被备份。