【问题标题】:DynamoDB querying multiple multiple items in the same partition key of a GSIDynamoDB 查询 GSI 的同一分区键中的多个项目
【发布时间】:2016-05-26 23:51:34
【问题描述】:

我有一个 DynamoDB 表“音乐”。在这方面,它有一个 GSI,其分区键为“Category”,排序键为“UserRating”。

作为示例,我可以轻松查询“类别”=“说唱”和“用户评分”=1 中的歌曲

例如,我想做的是查询“类别”=“Rap + Rock + Jazz”和“UserRating”= 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);

【问题讨论】:

    标签: android amazon-web-services amazon-dynamodb


    【解决方案1】:

    您必须进行 3 次不同的调用(即“Rap, 1”、“Rock, 1”和“Jazz, 1”各调用一次),然后在客户端合并响应。

    如果 CategoryUserRating 是您表上的分区键和排序键(而不是 GSI,就像您的情况一样),那么您可以使用 BatchGetItem API 来获取您的数据一气呵成。不幸的是,该 API 不适用于 GSI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多