2016-05-26 3 views
0

私はDynamoDBテーブル "Music"を持っています。これには、パーティションキー "Category"とソートキー "UserRating"を持つGSIがあります。DynamoDBはGSIの同じパーティションキーにある複数の項目を照会します

私は「カテゴリー」である=「ラップ」と「UserRating」の歌のための一例として、簡単に問い合わせることができますが= 1

どのようにこれまで私は、たとえばやりたい何か」であるクエリの曲です"="ラップ+ロック+ジャズ "と"ユーザー格付け "= 1

これは可能ですか、複数のクエリを作成してクライアント側でそれらを結合する必要はありますか?

これは私が現在で照会していたコードです:あなたは「ラップ、1」、「ロック、1」と「ジャズ、のための3つの異なるコール(すなわち、1つのそれぞれを行う必要があります

SongDatabaseMappingAdapter songs = new SongDatabaseMappingAdapter(); 
      songs.setCategory("Rap"); 

      String userRatingQueryString = "1"; 

      Condition rangeKeyCondition = new Condition() 
        .withComparisonOperator(ComparisonOperator.EQ) 
        .withAttributeValueList(new AttributeValue().withN(userRatingQueryString)); 

      DynamoDBQueryExpression queryExpression = new DynamoDBQueryExpression() 
        .withHashKeyValues(songs) 
        .withIndexName("Category-UserRating-index") 
        .withRangeKeyCondition("UserRating", rangeKeyCondition) 
        .withConsistentRead(false); 

      return mapper.query(SongDatabaseMappingAdapter.class, queryExpression); 

答えて

1

1 ')、クライアント側で応答をマージします。

(あなたの場合のように、そしてないGSI上)CategoryUserRatingがあなたのテーブルの上にパーティション・キーおよびソート・キーだった場合は、一度にあなたのデータを取得するためにBatchGetItem APIを使用していたかもしれません。残念ながら、APIはGSIでは機能しません。

関連する問題