AWS DynamoDB-在java中对单个非键属性组合多个查询过滤器

AWS DynamoDB-在java中对单个非键属性组合多个查询过滤器,java,amazon-web-services,amazon-dynamodb,nosql,Java,Amazon Web Services,Amazon Dynamodb,Nosql,今年早些时候,Amazon支持对非关键属性的查询过滤器 条件可以在单个属性值上组合吗?例如,在这种情况下,我希望在单个“非键”列中检索与特定值列表不匹配的所有项目。 他们的文档说明,每个条件只能保存一个属性值进行比较,如不等于或以开头。因此,以下方法不起作用: HashMap<String, Condition> queryFilter = new HashMap<String, Condition>(); List<AttributeValue> Attr

今年早些时候,Amazon支持对非关键属性的查询过滤器

条件可以在单个属性值上组合吗?例如,在这种情况下,我希望在单个“非键”列中检索与特定值列表不匹配的所有项目。

他们的文档说明,每个条件只能保存一个属性值进行比较,如
不等于
开头。因此,以下方法不起作用:

HashMap<String, Condition> queryFilter = new HashMap<String, Condition>();

List<AttributeValue> AttributeValues = new ArrayList<AttributeValue>();
AttributeValues.add(new AttributeValue().withS("someValue1"));
AttributeValues.add(new AttributeValue().withS("someValue2"));

Condition attributeCondition = new Condition()
    .withComparisonOperator(ComparisonOperator.NE)
    .withAttributeValueList(AttributeValues);

queryFilter.put("COLUMN_1", attributeCondition);

DynamoDBQueryExpression<Item> queryExpression = new DynamoDBQueryExpression<Item>()
    .withHashKeyValues(itemKey)
    .withQueryFilter(queryFilter)
    .withLimit(pPageSize);
任何帮助或澄清将不胜感激


谢谢你,通过向查询中添加一个filtereexpression(最近在本文中介绍)就可以做到这一点

我在中看到了这一点,但没有升级到最新的AWS Java SDK:(

使用我上面的示例,这看起来像:

Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
expressionAttributeValues.put(":val1", new AttributeValue().withS("someValue1"));
expressionAttributeValues.put(":val2", new AttributeValue().withS("someValue2"));

DynamoDBQueryExpression<Item> queryExpression = new DynamoDBQueryExpression<Item>()
    .withHashKeyValues(itemKey)
    .withFilterExpression("COLUMN_1 <> :val1 AND COLUMN_1 <> :val2")
    .withExpressionAttributeValues(expressionAttributeValues)
    .withLimit(pPageSize);
Map expressionAttributeValues=newhashmap();
expressionAttributeValues.put(“:val1”,新的AttributeValue()。带有(“someValue1”);
expressionAttributeValues.put(“:val2”,新的AttributeValue()。带有(“someValue2”);
DynamoDBQueryExpression queryExpression=新建DynamoDBQueryExpression()
.withHashKeyValues(itemKey)
.withFilterExpression(“列_1:val1和列_1:val2”)
.带有ExpressionAttributeValue(ExpressionAttributeValue)
.有限制(pPageSize);

感谢AWS的支持!

感谢您抽出时间发布问题的答案
Map<String, AttributeValue> expressionAttributeValues = new HashMap<String, AttributeValue>();
expressionAttributeValues.put(":val1", new AttributeValue().withS("someValue1"));
expressionAttributeValues.put(":val2", new AttributeValue().withS("someValue2"));

DynamoDBQueryExpression<Item> queryExpression = new DynamoDBQueryExpression<Item>()
    .withHashKeyValues(itemKey)
    .withFilterExpression("COLUMN_1 <> :val1 AND COLUMN_1 <> :val2")
    .withExpressionAttributeValues(expressionAttributeValues)
    .withLimit(pPageSize);