2016-10-28 6 views
0

idsを持つアイテムのリストのデータを返すタスクが与えられました。私はこれらのIDの100を言うのリストを持っているし、SQLで作品にする方法と同じように詳細を返すように照会するJavaのDynamoDbに相当するSQL IN

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

... :テーブルは以下のように定義IDを持っています。

私は多くのアプローチを試しましたが、提供されたリストのIDのすべてのドキュメントを返すDynamoDBインスタンスに対して1つのクエリを作成する方法はありません。

私はDynamoDBMapperを使用したいと考えています。

DynamoDBQueryExpressionwithHashKeyValuesが見つかったとき、私は大当たりを打つと思った。

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); 

を条件にも試してみましたが、 filtersはidのArrayListです。

これをDynamoDbで実行する方法はありますか、または既知のIDごとにDBに個別にクエリする必要がありますか? 100のクエリをデータストアに発行しますか?

答えて

0

クエリは特定のパーティションキーから開始するため、クエリAPIを使用して一度に1つのキーをルックアップする必要があります。代わりに、BatchGetItem APIを使用して、25個のアイテムに時間をリクエストできます。

関連する問題