如何从 Java 中的 DynamoDB getItem 中获取特定属性值

Posted

技术标签:

【中文标题】如何从 Java 中的 DynamoDB getItem 中获取特定属性值【英文标题】:How to fetch specific attribute value from DynamoDB getItem in Java 【发布时间】:2022-01-21 21:35:05 【问题描述】:

我正在使用 Dynamodb 项目 - getItem API 从 DynamoDB 表中获取记录。但它返回Item 对象,我想从Item 对象中检索特定的属性值。我们如何在 Java 中做到这一点?我找不到参考资料。

Table table = dynamoDB.getTable(tableName);
Item item = table.getItem(hashKeyFieldName, hashKeyFieldValue);

该项目包含以下字段: HashKey, TimeStamp, NumRetries

我想从上面的item 中获取具体的 NumRetries 值。这是可能的吗?类似int numRetries = item.get("NumRetries");

【问题讨论】:

【参考方案1】:

您可以使用Projection Expressions 从项目中获取某些属性,但请记住,使用投影表达式不会减少用于检索对象的 RCU 的使用和成本

代码示例,

GetItemSpec spec = new GetItemSpec()
    .withPrimaryKey("YourPrimaryKey", value)
    .withProjectionExpression("NumRetries");

Item item = table.getItem(spec);

System.out.println(item.toJSONPretty());

更多代码示例可以在here找到。

【讨论】:

【参考方案2】:

您应该可以使用Projection Expression:

GetItemSpec spec = new GetItemSpec().withPrimaryKey("primaryKey", primaryKey)
             .withProjectionExpression("HashKey,  TimeStamp, NumRetries");
Item outcome = table.getItem(spec);

names map 可能是必要的。

【讨论】:

以上是关于如何从 Java 中的 DynamoDB getItem 中获取特定属性值的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 EMR/Hive 将数据从 S3 导入 DynamoDB 时处理包含在引号 (CSV) 中的字段

Java中的GetX,GetY方法

使用“where”条件从 Amazon DynamoDB 获取项目

我需要从 DynamoDB 中的用户表中获取用户 ID?

AWS SDK JavaScript v3 / 如何在 dynamoDB 扫描命令中使用 ExpressionAttributeNames?

DynamoDB 到 Redshift