我有一个ID为String类型的列表。我想扫描DynamoDB,并获得包含不具有这些ID的项目的结果列表。但是我不知道如何键入过滤器表达式。 ReviewId是字符串类型的主分区键。
Map<String, AttributeValue> eav = new HashMap<>();
eav.put(":idFilter", new AttributeValue().withSS(idFilter));
DynamoDBScanExpression scanExp = new DynamoDBScanExpression()
.withFilterExpression("ReviewId <> (:idFilter)")
.withExpressionAttributeValues(eav);
上面的过滤器表达式是有效的,但是它仍然始终返回列表中ID为ID的项目。
我还尝试过在
in
运算符之前和之后包含<>
这个词。 最佳答案
您可以按以下方式更改过滤器表达式,并使用ExpressionAttributeValues
键的值填充:reviewId1, :reviewId2, :reviewId3
。
FilterExpression: "NOT ReviewId in (:reviewId1, :reviewId2, :reviewId3)"
注意:-
不幸的是,您无法将
idFilter
保留为SET或LIST与DynamoDB的String属性进行比较。