Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWS DynamoDB扫描筛选器表达式在列表中的字符串上使用不等于_Java_Amazon Web Services_Amazon Dynamodb_Aws Sdk - Fatal编程技术网

Java AWS DynamoDB扫描筛选器表达式在列表中的字符串上使用不等于

Java AWS DynamoDB扫描筛选器表达式在列表中的字符串上使用不等于,java,amazon-web-services,amazon-dynamodb,aws-sdk,Java,Amazon Web Services,Amazon Dynamodb,Aws Sdk,我有一个ID为String类型的列表。我想扫描DynamoDB并获得一个结果列表,其中包含没有这些ID的项。但我不知道如何键入筛选器表达式。ReviewId是String类型的主分区键 Map<String, AttributeValue> eav = new HashMap<>(); eav.put(":idFilter", new AttributeValue().withSS(idFilter)); DynamoDBScanExpression scanExp =

我有一个ID为String类型的列表。我想扫描DynamoDB并获得一个结果列表,其中包含没有这些ID的项。但我不知道如何键入筛选器表达式。ReviewId是String类型的主分区键

Map<String, AttributeValue> eav = new HashMap<>();
eav.put(":idFilter", new AttributeValue().withSS(idFilter));

DynamoDBScanExpression scanExp = new DynamoDBScanExpression()
          .withFilterExpression("ReviewId <> (:idFilter)")
          .withExpressionAttributeValues(eav);
Map eav=newhashmap();
eav.put(“:idFilter”,新的AttributeValue().withSS(idFilter));
DynamoDBScanExpression scanExp=新的DynamoDBScanExpression()
.withFilterExpression(“ReviewId(:idFilter)”)
.带有表达式属性值(eav);
上面的筛选器表达式有效,但它仍然始终返回列表中id为的项。
我还尝试将单词
包含在
操作符前后的
中。

您可以如下更改筛选表达式,并使用键的值填充
表达式属性值
:reviewId1,:reviewId2,:reviewId3

FilterExpression: "NOT ReviewId in (:reviewId1, :reviewId2, :reviewId3)"
注意:-


不幸的是,您不能将
idFilter
保留为SET或LIST以与DynamoDB的String属性进行比较。

ReviewId属性属于DynamoDB数据类型SET或LIST?@conceptquest ReviewId是表中的主要分区键,它属于String类型。这是很好的信息,为什么它没有记录在AWS文档中。很烦人。