2017-10-05 51 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"));