我有一个17列的dynamodb表(名为Student)。在此表中,我有诸如student_id,name,age ...的列。我想让年龄大于18岁的学生学习。此代码段给出了List<Student>
。但是我只想要List<String>
,即仅包含student_id的列表。
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
scanExpression.addFilterCondition("age", new Condition()
.withComparisonOperator(ComparisonOperator.GT)
.withAttributeValueList(new AttributeValue().withN(age)));
我尝试过:scanExpression.setProjectionExpression("student_id");
但是会引发错误。所以我在这里做什么错。 并且是否可以通过DynamoDBQueryExpression来完成此任务 另外,如果我要多个选择性列,建议使用相同的方法
答案 0 :(得分:0)
您的代码示例不足以让我了解如何执行扫描表达式。是否使用DynamoDBMapper,如果是,则扫描结果始终返回表所映射到的类的对象列表。提供投影表达式将仅限制返回的属性(请参阅this)。返回扫描结果后,您仍然必须将student_id提取到列表中。
List<Student> result = mapper.scan(Student.class, scanExpression);
List<String> studentIds = result
.stream()
.map(student -> student.getStudentId())
.collect(Collectors.toList());
有关查询和扫描的更多示例,请参见this AWS Documentation。