为什么DynamoDB使用QuerySpec,DynamoDBQueryExpression,CLI生成不同的结果数据?

时间:2018-09-27 15:34:12

标签: java nosql amazon-dynamodb query-expressions dynamodb-queries

我在3种类型的界面上进行了测试。但是结果数据有所不同。

一开始就

list2 = [['a','b'],['a','b'],['a','b']]

cli能够获取我希望获取的干净数据。但是问题在于DynamoDBQueryExpression和QuerySpec。 这样一个人的结果数据是有限的,而另一个则没有返回数据... 我的意思是AccumulatedItemCount为0,迭代器数据为空。

尤其是QuerySpec为空。

aws dynamodb query --table-name 'table' --index-name 'GSIName'  \
--key-condition-expression 'createdTime = :a' \
--filter-expression '(contains(tags,:val0) or contains(tags,:val1))' \
--expression-attribute-values '{":a":{"N":"1538023462"},":val0":{"S":"test"},":val1":{"S":"test2"}}' \
--no-scan-index-forward \
--no-consistent-read \
--page-size 50

Dynamodb表设计 dataTypes
Table table = dynamoDB.getTable("table"); Index index = table.getIndex("GSIName"); QuerySpec spec = new QuerySpec() .withKeyConditionExpression("createdTime = :a") .withFilterExpression(queryString) //queryString : (contains(tags,:val0) or contains(tags,:val1)) .withValueMap(query2) // query2 values : :a=1538023462, :val0=test, :val1=test2 .withConsistentRead(false) .withScanIndexForward(false) .withMaxPageSize(50); ItemCollection<QueryOutcome> items = index.query(spec); String queryString= "(contains(tags,:val0) or contains(tags,:val1))"; HashMap<String, AttributeValue> query = new HashMap<>(); query.put(":val0", new AttributeValue("test")); query.put(":val1", new AttributeValue("test2")); DynamoDBQueryExpression<RecommendationUserInfoTable> expression = new DynamoDBQueryExpression<RecommendationUserInfoTable>() .withIndexName('GSIName') .withHashKeyValues(key) .withFilterExpression(queryString) .withExpressionAttributeValues(query) .withConsistentRead(false) .withScanIndexForward(false) .withLimit(50);

0 个答案:

没有答案