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