2014-01-15 106 views
0

我有一个表格,其中有时间戳range_key。我的目标是检索距离给定时间戳最近的日期。当我像t.query(hash_key="somename", range_key_condition = db.boto.dynamodb.condition.LT(1389799297))那样查询时,它自然会获得比给定时间戳更少的项目,并且我取最接近的一个。我也可以通过使用BETWEEN比较器来实现这一点,通过从当前时间延续一些常量秒并在这些时间戳之间查询并选择最接近原始时间戳的最后一个。如果它返回的结果不是我递减一点,并重试,直到我有一个非空的结果集。查询最近的项目

我也想知道当我调用上面的查询函数会发生什么?使用该函数查询后,我们还需要使用result_set.next_response()函数来获取元素。在第一个函数中,仅确定磁盘上项目的偏移量,而不是使用next_response函数从磁盘中检索它们?

回答

0

Migrate to DynamoDB v2和使用limit上查询:

t.query(
    hash_key__eq="somename", 
    range_key_condition__lt=1389799297, 
    reverse=True, 
    limit=1 
) 
+0

我跑我的Python脚本在调试模式下记录。当我用你的方式查询时,在日志文件中,我看到的所有项目都小于range_key。客户端实际上是否在客户端计算机上重试所有小于range_key和过滤器的项目,还是仅仅因为打印了在发电机服务器上完成的所有细节的调试模式? –

+0

@ mustafa.yavuz如果您为boto启用调试,您将看到从DynamoDB服务器检索到的内容。但我现在可以告诉你,它是DynamoDB,它返回符合条件的项目。 – kukido