2017-03-27 78 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