java - SQL IN 与 java 中的 DynamoDb 等效

标签 java amazon-web-services amazon-dynamodb

我收到了一项任务,要返回我拥有 id 的项目列表的数据。该表的 id 定义为: ...

"KeySchema" [ 
    0: { 
        "AttributeName":"id"
        "KeyType":"HASH"
        "TableStatus":"ACTIVE"

我有一个包含 100 个 id 的列表,并且希望以类似于 SQL 中 IN 工作方式的方式进行查询以返回详细信息。

我尝试了多种方法,但找不到一种方法可以对 DynamoDB 实例进行单个查询,在该实例中它将返回所提供列表中 Id 的所有文档。

我希望使用DynamoDBMapper。

当我在 DynamoDBQueryExpression 上发现 withHashKeyValues 时,我以为自己中了大奖。

例如

DynamoDBQueryExpression<MyObject> ddqe;
...
for (String idStr : idList) {
        MyObject mo= new MyObject();
        mo.setId(idStr);

        ddqe.withHashKeyValues(mo);
    }

但是查看代码,尽管该方法是复数,但有一条注释说:

Note 1: Currently the DynamoDBMapper supports only one value per hash key.

我还尝试了一个条件(以及其他许多事情)

    Condition condition = new Condition();
    condition.withAttributeValueList(filters);
    condition.withComparisonOperator(ComparisonOperator.EQ);

其中过滤器是 ids 的 ArrayList。

有没有办法在 DynamoDb 中执行此操作,或者我必须单独查询数据库中的每个已知 ID,例如向数据存储发出 100 个查询?

最佳答案

查询从特定分区键开始,因此您必须使用查询 API 一次查找一个键。相反,您可以使用 BatchGetItem API 并一次请求 25 个项目。

关于java - SQL IN 与 java 中的 DynamoDb 等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40306667/

相关文章:

amazon-web-services - DynamoDB 是对表的读/写容量输入设置收费,还是仅对使用收费?

java - 如何从平面 SQL 选择结果集创建嵌套映射

java - 比较 Java 中的修饰符

java - 用于 GIS 目的的第三方库

java - 如何将多个注释合并为一个注释?

amazon-web-services - 将输出变量与 terraform 一起使用时,“不是模块的有效输出”

javascript - DynamoDB Vogels 中索引 stringSet 的 ValidationException

amazon-web-services - 无法读取AWS中的查询参数

php - 如何将队列与按需 CakePHP 工作程序一起使用?

amazon-web-services - DynamoDB创建Session的常用函数