2017-03-27 77 views
1

我試圖在我的dynamodb中建立某個屬性的直方圖。
我想最簡單的方法是使用多filter-expression
這是我的底線查詢與單一filter-expression和它的作品dynamodb掃描中的多個FilterExpression

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "contains(score, :s)" --expression-attribute-values '{ ":s": { "N": "1" } }' --limit 100 

現在,我嘗試將其擴展到多個filter expressions和IM不知道如何。
我曾嘗試:

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "score = :s" --filter-expression "score = :s1" --expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' --limit 100 

aws dynamodb scan --table-name test --select "COUNT" --filter-expression "score = :s" | "score = :s1" --expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' --limit 100 

回答

2

篩選表達式是一種條件表達式。你可以combine filter expressions with boolean logic。但是,在您的示例中,您可以不使用AND/OR運算符來組合表達式。

aws dynamodb scan --table-name test --select "COUNT" \ 
--filter-expression "score IN :s, :s1" \ 
--expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' \ 
--limit 100 
+1

這是運行查詢後返回的結果:調用掃描操作時發生錯誤(ValidationException):Invalid FilterExpression:Syntax error;標記:「:s」,靠近:「IN:s」 –

2

大概我遲到了。但是,當時正在尋找一個類似的場景,卻一無所獲。如果其他人能夠受益,仍然會回答。

aws dynamodb scan --table-name test --select "COUNT" \ 
--filter-expression "score = :s OR score = :s1" \ 
--expression-attribute-values '{ ":s": { "N": "1" }, ":s1": { "N": "40" } }' \ 
--limit 100