我有下面的项目在我的dynamodb
entry timestamp status key
ent1 Fri Dec 04 11:26:17 EST 2020 Success 101
ent2 Fri Dec 04 11:26:18 EST 2020 Failure 102
ent3 Fri Dec 04 11:26:19 EST 2020 Success 101
这里我只需要获取最后插入的状态= Success,即基于最新的时间戳-ent 3
预期数量
ent3 Fri Dec 04 11:26:19 EST 2020 Success 101
使用以下代码时,我没有看到结果返回
response=table.query(KeyConditionExpression= Key('key').eq('101'),
FilterExpression=Attr('status').eq('Success'))
那么如何从数据库中过滤/获取最后插入的项目呢?
谢谢
3条答案
按热度按时间vbopmzt11#
您可以添加一个Global Secondary Index(GSI),将
status
作为分区关键字,将timestamp
作为排序关键字,然后使用Limit=1
查询该GSI以获取具有最新时间戳的项。如果需要最早的时间戳,请将ScanIndexForward=false
添加到查询中。gab6jxml2#
尝试更新代码以遵循以下格式:
我没有使用你在上面使用过的助手,因为它更容易,更动态地传递你的方程作为字符串参数。你也可以用一个更有意义的名字来替换'a',这样它更容易阅读。
编辑:我把两个例子混合在一起,所以这段代码可能不会像现在这样工作,但重点是给予一个例子,说明另一种实现目标的方法。
r1wp621o3#
如果您需要特定分区中最后数据,如条目分区键中的ent3,您可以尝试类似的操作