2017-10-05 75 views
0

有没有办法通过将范围键设置为NOT EQUAL值来查询AWS DynamoDB。不等于范围键android AWS Dynamo DB

我有下面的代码,我希望将工作:

Condition rangeKey = new Condition() 
        .withComparisonOperator(ComparisonOperator.NE) 
        .withAttributeValueList(new 
AttributeValue().withS(TestArray[0])); 

      conditionHashMap.put("ID", rangeKey); 


     queryExpression 
       .withIndexName("Index Key") 
       .withHashKeyValues(KEYVALUE) 
       .withRangeKeyConditions(conditionHashMap) 
       .withConsistentRead(false); 

但它总是引发以下错误:

Attempted conditional constraint is not an indexable operation 

试图改变ComparisonOperator到NOT_CONTAINS但同样的问题。通过大量的文章看来,似乎对条件操作符的查询有一些限制。

问题是。有没有一种解决方法可以给出与不相等或不包含相同的结果?

回答

0

不等于不能在KeyConditionExpression上使用RANGE键。但是,您可以使用FilterExpression上的NOT EQUALS条件作为RANGE键。

例子: -

在下面的例子中,我寻找与分区键“2014”和一系列重要的电影不等于“大新电影”。同样,你可以为你的情况做。

QuerySpec querySpec = new QuerySpec(); 

querySpec.withKeyConditionExpression("yearkey = :yearval").withFilterExpression("title <> :titleval") 
      .withValueMap(new ValueMap().withNumber(":yearval", 2014).withString(":titleval", "The Big New Movie")); 
相关问题