目标c-AWSDynamoDBQueryExpression按UNIX时间戳排序



我是NoSQL数据库的新手,我已经将数据库模式从将日期存储为UTC时间戳字符串更改为UNIX时间戳(数字),希望我可以创建扫描或查询表达式来查找表中的1000个最新项。我还没有找到使用AWSDynamoDBQueryExpression类实现这一点的简单代码片段。扫描似乎没有任何排序机制,但查询可能有。有什么想法吗?

DynamoDB中没有ORDER BY功能。如果你想运行前N查询,你必须执行扫描,然后自己排序结果。

Mark B说得对,查询结果可以按排序键排序,但这只是在查询的上下文中。查询本质上局限于单个分区键。

如果你的表很小,那么你可以在表上创建一个全局辅助索引,其中分区键可以是一个对所有项目都相同的属性,然后使用时间戳属性作为排序键。但请记住,一旦你的桌子变大,这种情况就会崩溃。如果你这样做的话,你最好不要使用迪纳摩。您最好在RDS上使用关系数据库。

首先,您需要确保时间戳字段是DynamoDB表的排序键(或该表上全局辅助索引的排序键)。然后您只需要运行一个查询。来自文件:

查询结果始终按排序键值进行排序。如果数据排序键的类型为Number,结果以数字形式返回顺序否则,将按UTF-8字节的顺序返回结果。通过默认情况下,排序顺序为升序。要颠倒顺序,请设置ScanIndexForward参数为false。

最新更新