2015-07-01 120 views
3

因此,由於AWS PowerShell工具不支持DDB查詢/掃描操作,因此我使用AWS CLI通過Powershell對具有~500條記錄的DynamoDB表進行掃描。我可以運行沒有過濾器的命令,並獲得我所有的物品:DynamoDB API篩選掃描不會返回

& aws dynamodb scan --table-name "$table_name" --projection-expression "$item_key" 

這將返回$ item_key的所有500+個值。

問題是當我試圖篩選掃描:

& aws dynamodb scan --table-name "$table_name" --projection-expression "$item_key" --filter-expression "item_key_2 = `"$item_value`"" 

這將返回計數0,沒有項目,即使在表中有幾個值匹配$ ITEM_VALUE說。

我在這裏錯過/做錯了什麼?

+1

什麼是'item_key_2'?它是一個變量還是一個字段的名稱?[aws doco](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults)不是很很有幫助,它可能更容易將結果存儲在Psobject中並在Power中進行過濾貝殼。 –

+0

我最終只是在Powershell中進行全表掃描和過濾。我發現David描述的本機DynamoDB過濾太笨重,無法使用。另外,由於過濾掃描在過濾之前檢索所有行,所以節省很多時間。 – DataBeast

回答

1

我們假設$item_value此處擴展爲foobar。什麼是過濾器表達式尋找的是項目,其item_key_2foobar屬性具有相同的值:

{ 
    "item_key": "...", 
    "item_key_2": "It's a match!", 
    "foobar": "It's a match!" 
} 

比較item_key_2對文字值,你需要做的:

aws dynamodb scan \ 
    --table-name "$table_name" \ 
    --filter-expression "item_key_2 = :value" \ 
    --expression-attribute-values "{`":value`":{`"S`":`"$item_value`"}}" 

:(

相關問題