Amazon dynamodb DynamoDbMapper过滤器表达式的多个AND和OR条件

Amazon dynamodb DynamoDbMapper过滤器表达式的多个AND和OR条件,amazon-dynamodb,Amazon Dynamodb,我想用DynamoDbMapper创建一个过滤器表达式,例如条件a和条件B以及(条件C或条件D或条件E)。似乎DynamoDbMapper只能接受1个条件运算符(要么是所有条件和运算符,要么是带有或运算符的所有条件) 是否可以通过DynamoDbMapper实现这一点 这绝对是可能的。下面是一个扫描示例,尽管它也适用于查询。本例将查找所有低于10美元的书籍和所有高于10美元的CD Map<String, AttributeValue> eav = new HashMap<Str

我想用DynamoDbMapper创建一个过滤器表达式,例如
条件a和条件B以及(条件C或条件D或条件E)
。似乎DynamoDbMapper只能接受1个条件运算符(要么是所有条件和运算符,要么是带有或运算符的所有条件)


是否可以通过
DynamoDbMapper
实现这一点

这绝对是可能的。下面是一个扫描示例,尽管它也适用于查询。本例将查找所有低于10美元的书籍和所有高于10美元的CD

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);
Map eav=newhashmap();
eav.put(“:val1”,新的AttributeValue(),带n(10));
eav.put(“:val2”,新的AttributeValue()。带有(“Book”);
eav.put(“:val3”,新的AttributeValue()。带有(“CD”);
DynamoDBScanExpression scanExpression=新的DynamoDBScanExpression()
.withFilterExpression(“价格<:val1和产品类别=:val2或价格>:val1和产品类别=:val3”)
.带有表达式属性值(eav);
List scanResult=mapper.scan(Book.class,scanExpression);
您可以通过签出来验证这一点。另外,这里是和的相关javadoc