在dynamo db的过滤器表达式中的OR条件

时间:2016-12-20 19:57:36

标签: amazon-web-services amazon-dynamodb query-expressions

我有一个用例,我需要使用dynamo db query expression以编程方式查询dynamo db。 e.x假设A和B有两个属性,我想要一个像(A='Test' OR A ='Test1') and B='test2'这样的过滤表达式。

我搜索了相关内容,但没有找到有用的资源。 我是dynamo db的新手。

1 个答案:

答案 0 :(得分:2)

这就是你在java中的表现

Table table = dynamoDB.getTable(tableName);
QuerySpec spec = new QuerySpec()
   // .withKeyConditionExpression("partitionKey = :id and sortKey > :range") // In case filter expression is on key attributes
    .withFilterExpression("(A = :a1 or A = :a2) and B = :b")
    .withValueMap(new ValueMap()
        //.withString(":id", "Partition key value")
        //.withString(":range", 100)
        .withString(":a1", "Test")
        .withString(":a2", "Test1")
        .withString(":b", "test2"))
   // .withConsistentRead(true);

ItemCollection<QueryOutcome> items = table.query(spec);

如果你的A和B是关键属性,你在KeyConditionExpression中指定它们,否则一切都在FilterExpression中。

主要区别是密钥表达式应用于名称建议的关键属性,并且由于它是您收取的内容而获取的记录,而过滤器表达式是免费的并且在获取这些记录后应用以返回仅匹配过滤条件记录。

了解更多阅读 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html