2016-05-26 7 views
0

私はDynamoDBテーブル "Music"を持っています。これには、パーティションキー "Category"とソートキー "UserRating"を持つGSIがあります。DynamoDBソートキーのGSIである場合にGSIインデックスの値だけをクエリできます

私は私は何をしたいことは、クエリで、ちょうどすべての「カテゴリー」を取り戻す「カテゴリー」=「ラップ」と「UserRating」にある曲のための一例として、簡単に= 1

を照会することができます。これはGSIと私が聞いたパーティションキーなので、あなたはそれを行うことができますが、私はどのようにわからないのですか?

ソートキーを使用せずに「カテゴリ」に別のGSIを作成する必要がありますか?

ありがとうございました。

答えて

1

キーでフィルタリングしたくない場合。インデックスをスキャンする必要があるかもしれません。以下の解決策は、インデックスをスキャンしてすべてのカテゴリ(すべての別個のカテゴリではない)を取得することです。

GSIからすべてのカテゴリを取得するには、以下のJavaコードを参照してください。それに応じて、下のコードの二次インデックス名を置き換えます。

List<String> categoryList = new ArrayList<>(); 
    DynamoDB dynamoDB = new DynamoDB(dynamoDBClient); 
    Table table = dynamoDB.getTable("Music"); 
    Index index = table.getIndex("Secondary Index Name"); 

    ItemCollection<ScanOutcome> items = null; 
    ScanSpec scanSpec = new ScanSpec().withSelect(Select.SPECIFIC_ATTRIBUTES).withAttributesToGet("Category"); 

    items = index.scan(scanSpec); 
    Iterator<Item> pageIterator = items.iterator(); 
    while (pageIterator.hasNext()) { 

     categoryList.add(pageIterator.next().getString("Category")); 
    } 
関連する問題