按范围键以外的其他属性排序结果项

时间:2013-08-26 11:42:02

标签: sorting amazon-dynamodb

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

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

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

现在我查询'user_playlists'表以检索特定用户的所有播放列表。使用散列和范围键完成查询。

结果按范围键'playlist_id'排序,这是一些哈希值,所以按该属性排序对我来说没什么意义。所以我想按属性'created_ts'对结果进行排序。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以执行此操作,但您需要创建一个LocalSecondaryIndex,其中包含您要用于排序的RANGE属性。

如果您同时使用HASHRANGE进行查询,则无法获得一个播放列表,您将获得一个播放列表,因此您的问题有点令人困惑。如果您想在created_ts字段下找到播放列表,最好的办法是创建一个LocalSecondaryIndexHASHuser_idRANGE为{{ 1}}。