0

我是NoSQL數據庫的新手,我已經將數據庫模式從存儲日期更改爲UTC時間戳字符串,轉換爲UNIX時間戳(數字),希望我可以創建掃描或查詢表達式查找表中最近的1000個項目。我還沒有找到一個簡單的代碼片段來完成這個使用AWSDynamoDBQueryExpression類。掃描似乎沒有任何排序機制,但查詢可能。有任何想法嗎?UNIX的AWSDynamoDBQueryExpression時間戳

回答

1

DynamoDB中沒有ORDER BY功能。如果您想運行top N查詢,您必須執行掃描並自行排序結果。

Mark B是正確的,查詢結果可以按排序鍵進行排序,但僅限於查詢的上下文內。查詢本質上侷限於單個分區鍵。

如果您的表很小,那麼您可以在表中創建一個全局二級索引,其中分區鍵可以是所有項相同的屬性,然後使用timestamp屬性作爲排序鍵。但請記住,一旦你的桌子變大,這將會崩潰。如果你這樣做,你可能不會使用Dynamo。您最好在RDS上使用關係數據庫。

+0

NoSQL聽起來像是有史以來最糟糕的憎惡,謝謝幫助我理解爲什麼 –

+0

如何在SQL land中「排序」 - 輸入「Order By [column name]」。如何在NoSQL DynamoDB中「排序」 - 1.創建分區鍵2.創建排序鍵3.創建包含鍵的全局二級索引4.確保在全局二級索引上設置了正確的查詢權限5.爲分區添加keyConditionExpression鍵6.向你選擇的上帝祈禱7.旋轉3次左右 –

1

首先,您需要確保timestamp字段是您的DynamoDB表(或該表上的全局二級索引的排序鍵)的排序鍵。然後你只需要運行一個查詢。從the documentation

查詢結果總是按排序鍵值排序。如果排序鍵的數據類型爲 ,則結果以數字 順序返回;否則,結果將按照UTF-8字節的順序返回。默認情況下,排序順序爲 。要顛倒順序,請將 ScanIndexForward參數設置爲false。