Сканирование AWS DynamoDB с помощью ScanFilter с вложенным свойством - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь сканировать DynamodB, и мое сканирование работает нормально с корневыми свойствами, но не работает с вложенными свойствами. Моя кодовая база:

String workingProperty = "name"
String notWorkingProperty1 = "name.firstName"
String notWorkingProperty2 = "#name.firstName"
String notWorkingProperty3 = "#name.#firstName"

private Table table;
public List<Item> getAllFilteredItems() {

    ScanFilter scanFilter = new ScanFilter(propertyToLookFor).exists();
    StreamSupport.stream(table.scan(scanFilter).spliterator(), false)
                .collect(Collectors.toList());
}

Мой JSON:

{
  "name": {
    "firstName": "Manish"
  }
}

1 Ответ

2 голосов
/ 06 июня 2019

Сканирование Фильтры устарели, вы должны попытаться использовать Выражение фильтра вместо этого с оператором attribute_exists .

Попробуйте что-то подобное (вы можете удалитьwithNameMap и withValueMap, но не тестировали)

ScanSpec scanSpec = new ScanSpec().withFilterExpression("attribute_exists(name.firstName)").withNameMap(new NameMap()).withValueMap(new ValueMap());

results = table.scan(scanSpec)
...