DynamoDB Can I query just the values of a GSI Index when it is a GSI with sort Key
我有一个 DynamoDB 表"音乐"。在此它有一个 GSI,其分区键为 "Category" 和排序键 "UserRating"。
作为示例,我可以轻松查询 "Category" = "Rap" 和 "UserRating" = 1
中的歌曲
我想做的是查询并取回所有"类别"。因为这是一个 GSI 和分区键,我听说你可以做到,但我不知道怎么做。
我是否可以或是否必须在没有排序键的情况下在"类别"上创建单独的 GSI。
感谢您的帮助。
当您不想按键过滤时。您可能需要扫描索引。以下解决方案是扫描索引以获取所有类别(不是所有不同的类别)。
请在下面找到 Java 代码以从 GSI 获取所有类别。相应地替换以下代码中的二级索引名称。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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")); } |