在dynamodb扫描中多次FilterExpression

时间:2017-03-27 19:37:45

标签: amazon-dynamodb aws-cli

我试图在我的dynamodb中建立某个属性的直方图 我认为最简单的方法是使用多个private
这是我的基线查询,只有一个filter-expression,它可以正常工作

filter-expression

现在,我试图将其扩展到多个aws dynamodb scan --table-name test --select "COUNT" --filter-expression "contains(score, :s)" --expression-attribute-values '{ ":s": { "N": "1" } }' --limit 100 并且我不确定如何 我试过了:

filter expressions

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

4 个答案:

答案 0 :(得分:8)

可能我迟到了。但是,正在寻找类似的场景而一无所获。如果其他人可以受益,仍在回答。

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

答案 1 :(得分: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

答案 2 :(得分:0)

使用之间

aws dynamodb scan --table-name test --select "COUNT"  \
--filter-expression "(score between :s and :s1)"  \
--expression-attribute-values '{ ":s": { "N": "0" }, ":s1": { "N": "10" } }'

答案 3 :(得分:0)

对于那些正在搜索 nodeJs 过滤器表达式的人:

const params = {
        TableName: "orderMessages",
        Key: {
            order_id,
            
        },
        FilterExpression: "#order_id = :ordrId OR #timestamp < :ts",
        ExpressionAttributeNames: {
            "#order_id": "order_id",
            "#timestamp": "timestamp"
          },
          ExpressionAttributeValues: {
            ":ordrId": order_id,
            ":ts": now
          },
    }

快乐编码:)