当前位置: 首页 > 知识库问答 >
问题:

如何在使用dynamodb查询时对结果排序?

徐卓
2023-03-14

如有任何帮助,不胜感激

共有1个答案

夏晋
2023-03-14

当使用复合主键设置表或索引时,DynamoDB将为您返回排序结果。这意味着其中两个属性用于创建密钥。第一个属性是分区键,第二个属性是排序键,对分区内的结果进行排序。

为了适应您的示例,假设您有一个Songs表和一个具有以下键模式的全局辅助索引:Songs表:-ArtistID(分区键)-SongName(排序键)-Timestamp(一个属性)SongsByArtistIndex(Songs表上的全局辅助索引):-ArtistID(分区键)-Timestamp(排序键)-SongName(一个投影属性)

在本例中,您可以根据您对不同属性排序的能力和愿望运行两种类型的查询。

  1. 按艺术家字母顺序排列的歌曲列表:查询歌曲表并将键条件设置为所需的艺术家。
  2. 按日期排序的艺术家歌曲:查询SongsByArtistIndex并将KeyCondition设置为所需的艺术家。

您可能需要更改表的键模式,以优化场景所需的排序查询/访问模式。请记住,只能在分区内进行排序。这有道理吗?

更多信息:DynamoDB查询方法、DynamoDB中的查询和扫描操作

 类似资料:
  • 主要内容:单字段排序,多字段排序通过条件查询语句可以查询到符合用户需求的数据,但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示。为了使查询结果的顺序满足用户的要求,MySQL 提供了 ORDER BY 关键字来对查询结果进行排序。 在实际应用中经常需要对查询结果进行排序,比如,在网上购物时,可以将商品按照价格进行排序;在医院的挂号系统中,可以按照挂号的先后顺序进行排序等。 ORDER BY 关键字主要用来将查询结果中

  • 我正在构建一个DynamoDB表,并且遇到了如何最好地构建索引的问题。我需要执行3个查询。 我的桌子: 以下是我需要实现的3个查询: 获取单个项目 现在我做一个getItem 作品伟大。 SQL: 如果我做这个本地索引,那么效果很好: SQL: 这是一个给我带来麻烦的问题。我想查询我的数据,并将其按日期排序返回。但是,我需要使用另一个字段作为范围进行查询。因此,如果我添加createdAt作为我的

  • 我有一个dynamodb表,它的字符串主键名为,数字排序键名为。我想获取dynamodb表中年龄

  • 我有一个要求,在Dynamodb中查询表时只需要返回一行。我可以在aws cli中看到一个名为“max items”的参数,它显然限制了查询的结果大小。以下是示例查询: 但我无法在Go中找到任何类似的关键字/属性。 以下是我可以找到的相关内容:如何使用Java设置DynamoDB返回的匹配项的限制?

  • 在他们的留档中,AWS提到了用于查询的关键条件表达式: 该条件可以选择对单个排序键值执行多个比较测试之一。这允许Query检索具有给定分区键值和排序键值的一个项目,或具有相同分区键值但不同排序键值的多个项目。 但是,我无法使其正常工作,例如,生成类似以下内容的内容:pk=:pk AND(begins\u with(sk,:foo)或begins\u with(sk,:bar))我得到了错误

  • 您好,我是DynamoDB新手,我创建了一个表,其中包含分区键“pk”和排序键“id” 在then item explorer中,我可以用pk进行查询并对键值进行排序,这似乎很有效。 在PartiQL编辑器中我做 我得到的错误过滤器表达式只能包含非主键属性:主键属性:id 我不知道如何在键条件中指定排序键,而不是使用WHERE子句指定筛选条件。