2014-09-01 16 views
5

說,在AWS迪納摩,我有一個表是這樣的:如何獲取AWS Dynamo中列的唯一值?

ID (HKey) Date (RKey) BoxName 
0   1/1/2014  Box-1 
1   2/1/2014  Box-1 
2   3/1/2014  Box-2 
3   4/1/2014  Box-3 
4   5/1/2014  Box-3 
5   5/1/2014  Box-1 

我想,在一個單一的查詢,得到的第一行每一個獨特的盒。可能會有數百個盒子需要第一次入場,導致個別請求效率低下。

我似乎無法在API中找到任何可以讓我這樣做的東西。可能嗎?我將如何做到這一點?

回答

2

您可能需要考慮在Boxname(散列鍵)上創建全局二級索引(GSI),並將日期作爲範圍鍵。這將使您能夠在二級索引上使用查詢API,您可以查詢「查找帶有Boxname = $框的所有ID」。

查看documentation for GSI

希望這會有幫助, 斯瓦米

+1

不完全是我以後。我編輯了這個問題,以反映我想要在一個查詢中查找每個框的第一個。 – AlbeyAmakiir 2014-09-03 04:45:44

+0

GSI是你想要的。正如上面的答案中所提到的,您可以在GSI上使用框名稱作爲散列鍵進行「查詢」。由於GSI會使用Date對相同名稱的框進行排序,因此您可以將查詢的限制設置爲1以獲取最舊的框。唯一可能的是您可能想要創建一個包含所有框名稱的單獨表格。 – 2014-12-19 23:09:21

+2

我有類似的要求,我不相信你回答這個問題。問題是如何獲取唯一的boxnames列表?使用帶有boxname的GSI作爲hashkey,只能查詢是否知道boxname。此人希望在不知道他們的情況下查找所有框名。 – 2017-01-14 21:37:53