2016-04-24 88 views
0

我是AWS新手,我正在发现dynamoDB。我的桌子有一些预先注册的项目。现在我想说,例如,通过筛选每个项目得到的3个“表达式”(或键)中的两个来获得结果:“Id”和“Name”(3中的2,第3个是日期)。所以,我想按照“日期”排序。我为每个注册了时间戳的项目设置了自己的“日期”。如何在使用dynamodb查询时订购结果?

我可以通过使用“扫描”方法获取结果,但它并不是我真正想要的,因为数据不是订购者。

那么如何组织我的结果按日期键排序呢?

任何帮助将高度赞赏

回答

1

DynamoDB将返回你排序的结果,当你有一个设置了一个Composite Primary Key表或索引。这意味着两个属性用于创建密钥。第一个属性是分区键,第二个属性是Sort键,它将结果排序在分区内。

适应他们为榜样,以你的,想象一下你有一个歌曲目录,并具有以下主要架构全局二级索引: Songs Table: - ArtistID (partition key) - SongName (sort key) - Timestamp (an attribute) SongsByArtistIndex (Global Secondary Index on the Songs table): - ArtistID (partition key) - Timestamp (sort key) - SongName (a projected attribute)

在这个例子中,您可以运行两种类型的查询,根据你的能力&希望根据不同的属性进行排序。

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

您可能需要更改表格的关键模式,以针对您的方案所需的排序查询/访问模式进行优化。记住,你只能在一个分区内排序。那有意义吗?

更多信息: DynamoDB Query MethodQuery & Scan Operations in DynamoDB

+0

感谢回答。我创建了一个新表,并将Id定义为分区键和时间作为排序键。然而,参赛作品总是随机排列的。当我试图通过lambda测试函数来检验我的数据时,我也无法使用de查询方法。我只能使用扫描。当我使用查询时,我得到一个空返回值。 –

+0

据我所知,在Lambda代码中执行查询没有限制。请参阅http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html。 – readyornot

+0

关于做你的餐桌钥匙,你有同样的ID有多少项?请记住,您的排序是在分区键内发生的。 – readyornot