12

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

我搜索了与此相关的内容,但找不到有用的资源。我是发电机数据库的新手。

4

1 回答 1

13

这就是你在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

于 2016-12-28T17:46:06.000 回答