2014-01-15 155 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