我是NoSQL数据库的新手,我已将数据库模式从将日期存储为UTC时间戳字符串更改为UNIX时间戳(数字),希望我可以创建扫描或查询表达式来查找1000表中的最新项目。我还没有找到一个简单的代码片段来完成这个使用AWSDynamoDBQueryExpression类。扫描似乎没有任何排序机制,但查询可能。有什么想法吗?
答案 0 :(得分:1)
首先,您需要确保timestamp字段是DynamoDB表的排序键(或该表上的Global Secondary Index的排序键)。然后你只需要运行一个查询。来自the documentation:
查询结果始终按排序键值排序。如果数据 排序键的类型是Number,结果以数字形式返回 订购;否则,结果以UTF-8字节的顺序返回。通过 默认情况下,排序顺序为升序。要反转顺序,请设置 ScanIndexForward参数为false。
答案 1 :(得分:1)
DynamoDB中没有ORDER BY
功能。如果您想运行 top N 查询,则必须执行扫描,然后自行订购结果。
Mark B是正确的,查询结果可以通过排序键排序,但这只是在查询的上下文中。查询本质上仅限于单个分区键。
如果您的表很小,那么您可以在表上创建全局二级索引,其中分区键可以是所有项目相同的属性,然后使用timestamp属性作为排序键。但请记住,一旦你的桌子变大,这将会崩溃。如果你这样做,你可能不会使用Dynamo。你最好使用RDS上的关系数据库。