AWS ProjectionExpression с помощью DynamoDBScanExpression - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть таблица DynamodB (с именем Student) с 17 столбцами.В этой таблице у меня есть столбцы, такие как 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. Также, если я хочу несколько выборочных столбцов, предложите метод для того же

1 Ответ

0 голосов
/ 16 декабря 2018

Мне не хватает вашего примера кода, чтобы увидеть, как вы выполняете выражение сканирования.Использует ли он DynamoDBMapper , если это так, результат сканирования всегда возвращает список объектов класса, которому сопоставлена ​​таблица.Предоставление выражения проекции ограничит только возвращаемые атрибуты (см. this ).Вам все еще нужно извлечь student_id в список после возвращения результата сканирования.

List<Student> result = mapper.scan(Student.class, scanExpression);
List<String> studentIds = result
            .stream()
            .map(student -> student.getStudentId())
            .collect(Collectors.toList());

Дополнительные примеры запросов и сканирования приведены в этой документации AWS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...