我一直在研究很多,但我找不到合适的答案/例子。
在dynamodb中我有'user_playlists'表,其中包含散列键'user_id'和范围键'playlist_id'(一个用户可以有N个播放列表)。
对于每个播放列表,我在属性“created_ts”中创建播放列表时存储信息(我存储创建时间的时间戳)。 'created_ts'被定义为索引。
现在我查询'user_playlists'表以检索特定用户的所有播放列表。使用散列和范围键完成查询。
结果按范围键'playlist_id'排序,这是一些哈希值,所以按该属性排序对我来说没什么意义。所以我想按属性'created_ts'对结果进行排序。
是否可以使用Query方法按索引属性进行排序?通过散列和范围键检索数据的现有逻辑应该保留。我只想按创建时间添加所需物品以获取订购商品。
答案 0 :(得分:0)
不,您无法根据亚马逊(https://forums.aws.amazon.com/thread.jspa?messageID=328982#)对扫描进行排序。此外,您无法使用任何字段对查询进行排序,如您在问题中所述。
无论如何,您可以在本地对结果进行排序,我正在使用下划线库中包含的sortBy进行排序。它不是最好的解决方案,但它可以工作
答案 1 :(得分:0)
您可以执行此操作,但您需要创建一个LocalSecondaryIndex
,其中包含您要用于排序的RANGE
属性。
如果您同时使用HASH
和RANGE
进行查询,则无法获得一个播放列表,您将获得一个播放列表,因此您的问题有点令人困惑。如果您想在created_ts
字段下找到播放列表,最好的办法是创建一个LocalSecondaryIndex
,HASH
为user_id
,RANGE
为{{ 1}}。