一开始就
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);