0

我一直在研究很多,但我找不到正确的答案/例子。

在 dynamodb 中,我有表“user_playlists”,其中包含哈希键“user_id”和范围键“playlist_id”(一个用户可以有 N 个播放列表)。

对于每个播放列表,我在属性“created_ts”中创建播放列表时存储信息(我存储创建时间的时间戳)。'created_ts' 被定义为索引。

现在我查询“user_playlists”表来检索特定用户的所有播放列表。查询是使用哈希和范围键完成的。

结果按范围键“playlist_id”排序,这是一些哈希,因此按该属性排序对我来说毫无意义。所以我想按属性'created_ts'对我的结果进行排序。

是否可以使用 Query 方法按该索引属性进行排序?通过哈希和范围键检索数据的现有逻辑应该保留。我只想添加所需的东西以按创建时间获取订购的物品。

4

2 回答 2

0

不,您不能根据 Amazon ( https://forums.aws.amazon.com/thread.jspa?messageID=328982# ) 对扫描进行排序。此外,正如您在问题中所述,您无法使用任何字段对查询进行排序。

无论如何,您可以在本地对结果进行排序,我正在使用下划线库中包含的 sortBy 来执行此操作。这不是最好的解决方案,但它有效

于 2013-09-05T09:53:15.813 回答
0

您可以这样做,但您需要创建一个与您要用于进行排序的属性LocalSecondaryIndex完全相同的属性。RANGE

如果您同时查询HASH并且RANGE您不会获得播放列表列表,您将获得一个列表,因此您的问题有点令人困惑。如果您想按created_ts字段查找播放列表,最好的办法是创建一个LocalSecondaryIndexwith HASHthebeing theuser_idRANGEthebeing created_ts

于 2016-07-29T13:25:28.930 回答