2017-10-05 8 views
0

Gibt es eine Möglichkeit, AWS DynamoDB abzufragen, indem Sie den Bereichsschlüssel auf NOT EQUAL setzen.Nicht gleich - Bereichsschlüssel android AWS Dynamo-DB

Ich habe den folgenden Code, den ich arbeiten würde gehofft:

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); 

Aber es wirft immer folgende Fehlermeldung:

Attempted conditional constraint is not an indexable operation 

versucht, die ComparisonOperator zu NOT_CONTAINS aber gleiches Problem ändern. Durchsucht eine Menge von Artikeln und es scheint, dass es eine Reihe von Einschränkungen für bedingte Operatoren bei Abfragen gibt.

Die Frage ist. Gibt es eine Arbeit, die das gleiche Ergebnis wie eine nicht oder nicht enthält?

Antwort

0

NOT EQUALS kann nicht auf KeyConditionExpression für eine RANGE-Taste verwendet werden. Sie können jedoch die Bedingung NOT EQUALS unter FilterExpression für einen RANGE-Schlüssel verwenden.

Beispiel: -

Im folgende Beispiel, ich bin auf der Suche nach Filmen mit Partitionsschlüssel ‚2014‘ und Bereichstaste entspricht nicht zu ‚The Big New Film‘. Ähnlich können Sie für Ihr Szenario tun.

QuerySpec querySpec = new QuerySpec(); 

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