2016-08-24 76 views
0

是否可以向dynamodb查询表达式添加约束条件,该表达式指出GSI应该不为null?在dynamodb查询中globalSecondaryIndex的NOT_NULL查询条件

有人可以提供例子。

是否可以构建一个如下所示的查询?

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

注: 请让我知道,如果在查询过程中,这是可能的,而不是在过滤时间?

+0

你是什么意思时,你说GSI空做?属性或散列/范围键? –

+0

我的意思是属性的值不能为空。 – 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)。

不等于操作符是 “<>”

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