DynamoDB-可以在不对包含键的属性进行硬编码的情况下向表中的所有项目添加属性吗?

时间:2019-03-28 18:15:08

标签: amazon-dynamodb

我需要为几个不同表的表中的每个项目添加一个属性。我希望能够提供一个表名,然后将属性添加到表中的所有内容,即使代码无需“知道”表中的当前属性也是如此。

我当前的计划是浏览表,获取键,然后将其用作updateItem请求的输入,在该请求中,我们将新属性添加到表中。

但是,我遇到了一个问题,因为该扫描返回了属性图,并且没有进行硬编码,所以我不确定如何才能识别出某些东西是键或sortKey还是仅仅是一个随机属性?

这是一个非常简单的问题示例:

public void someFunc() {
   ScanRequest scanRequest = new 
       ScanRequest().withTableName(tableName);
   ScanResult result = dynamoClient.scan(scanRequest);

   result.getItems().forEach(item -> addFlag(item));
}

public void addFlag(Map<String, AttributeValue> item) {
    // How do I know which attributes to use as a key? I'd like to keep this generic so I can use it on theoretically any table. 
   final UpdateItemRequest updateItemRequest = new UpdateItemRequest()
         .withKey(// map of attribute name to attribute here)
}
  1. 我有什么方法可以执行扫描并知道结果项的哪些部分用于密钥?
  2. 是否有更好的方法来更新所有项目以包含属性?

0 个答案:

没有答案