Несколько И и ИЛИ условий для выражения фильтра с DynamoDbMapper - PullRequest
0 голосов
/ 13 декабря 2018

Я хотел бы создать выражение фильтра с помощью DynamoDbMapper, например Condition A AND Condition B AND (Condition C OR Condition D OR Condition E).Похоже, что DynamoDbMapper мог принимать только 1 условный оператор (либо все условия И оператор / все условия с оператором ИЛИ).

Возможно ли достичь этого с помощью DynamoDbMapper?

1 Ответ

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

Это определенно возможно.Вот пример для сканирования, хотя он также будет работать для запроса.В этом примере будут найдены все книги стоимостью менее 10 долларов и все компакт-диски стоимостью более 10 долларов.

Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":val1", new AttributeValue().withN(10));
eav.put(":val2", new AttributeValue().withS("Book"));
eav.put(":val3", new AttributeValue().withS("CD"));

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression()
    .withFilterExpression("Price < :val1 and ProductCategory = :val2 or Price > :val1 and ProductCategory = :val3")
    .withExpressionAttributeValues(eav);

List<Book> scanResult = mapper.scan(Book.class, scanExpression);

В этом можно убедиться, проверив синтаксис для выражений условий .Кроме того, вот соответствующий javadoc для DynamoDBQueryExpression и DynamoDBScanExpression .

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