2016-02-15 31 views
6

有人請告訴我什麼是有效的關鍵條件表達式。我正在試圖在一個名爲MyKeyTable的簡單表上運行查詢。它有兩個「列」,即Id和AnotherNumberThatICareAbout,它是Long類型的。什麼是cli的有效dynamodb關鍵條件表達式

我想看看,我把所有的值,所以我嘗試:

aws dynamodb query --select ALL_ATTRIBUTES --table-name MyKeyTable 
--endpoint http://localhost:8000 
--key-condition-expression "WHAT DO I PUT IN HERE?" 

我需要什麼哈希投入?文檔在這個imho上有點蹩腳。任何幫助的讚賞,即使它只是一個良好的文檔的鏈接。

回答

2

創建一個包含密鑰的文件:test.json

{ 
    "yourHashKeyName": {"S": "abc"}, 
    "YourRangeKey": {"S": "xyz"} //optional 
} 

運行

aws dynamodb query --table-name "your table name" --key-conditions file://test.json 

參考:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html

對於掃描表

aws dynamodb scan --table-name "you table name" 

無需通過爲我們掃描整個表的任何鍵(注意:它會得到數據的最大1MB)

參考:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html

+0

MyHashKey - 將你的散列鍵值,在這裏我也作爲字符串參考,「ABC」將是哈希鍵的值 –

+0

在你的問題中,你已經採取了查詢,爲什麼我使用了,我會更新我的問題進行掃描以及 –

+0

爲了您可以使用掃描,我已經更新了答案 –

4

這裏有一個命令行,唯一的方法,你可以沒有中間文件使用。

首先,利用價值佔位符來構建你的關鍵條件表達式,如

--key-condition-expression "Id = :idValue" 

(不要忘了佔位符的冒號前綴!)

接下來,構建表達-attribute-values參數。請注意,它需要JSON格式。我總是試圖忘記這個棘手的一點是,你不能只爲數字插入42或爲字符串插入「foo」。您必須告知DynamoDb 類型和值。 Ref AWS docs以瞭解如何格式化值規格的完整細分,如果您需要它可能會非常複雜。

對於Windows,您可以通過加倍雙引號來避免引號。,

--expression-attribute-values "{"":idValue"":{""N"":""42""}}" 

適用於MacOS/Linux中,單引號,需要周圍的JSON:

--expression-attribute-values '{":idValue":{"N":"42"}}' 
+1

感謝您的支持!在JSON周圍使用單引號可能會使它更容易閱讀:'--expression-attribute-values'{「:idValue」:{「N」:「42」}}'' –

+0

嗯..絕對同意是更具可讀性,只是嘗試過,但準備更新這個答案,至少在Windows上它不喜歡它 - 打破第一個雙引號 –

+1

哦,這是OS X和Linux。 –

相關問題