2016-08-24 5 views
0

GSIがnullでない必要があることを示すdynamodbクエリ式に制約を追加できますか?dynamodbクエリのglobalSecondaryIndexのNOT_NULLクエリ条件

例を挙げることができます。

以下のようなクエリを作成することはできますか?

new DynamoDBQueryExpression<XXX>() 
      .withHashKeyValues(YYY).withKeyConditionExpression(GSI != NULL); 

注: これは、クエリの間ではなく、フィルタ時間の間で可能である場合は私に知らせてください!

+0

、あなたは何を意味するのですか?属性またはハッシュ/範囲キー? –

+0

属性の値がnullであってはなりません。 – gman

+0

サンプルデータを提供してください。 GSI属性が存在し、値がなく、DynamoDBテーブルにどのように格納されているのかを確認したいのですが? – notionquest

答えて

0

DynamoDB文字列属性にNULL文字列または空文字列を含めることはできません。

あなたはNULLを挿入しようとすると、APIは以下の例外をスローする必要があります -

java.lang.IllegalArgumentException: Input value must not be null 

あなたは空の文字列を挿入しようとすると、APIは以下の例外をスローする必要があります -

com.amazonaws.AmazonServiceException: One or more parameter values were invalid: An AttributeValue may not contain an empty string 

いくつかの属性(ハッシュや範囲キー以外の属性)にフィルタを追加したい場合は、以下の構文を使用できます(withFilterExpressionなど)。

は、オペレータに等しくないあなたはGSIのヌルを言うとき、 "<>"

Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>(); 
eav.put(":val1", new AttributeValue().withS("Some value")); 

DynamoDBQueryExpression<XXX> queryExpression = new DynamoDBQueryExpression<XXX>(); 
    queryExpression.withHashKeyValues(hashKeyValues);  
    queryExpression.withFilterExpression("docType <> :val1").withExpressionAttributeValues(eav);