我有一个 ID 为字符串类型的列表。我想扫描 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);
上面的过滤器表达式是有效的,但它仍然总是返回列表中带有 id 的项目。
我还尝试包含 in
这个词<>
前后运营商。
最佳答案
您可以如下更改过滤器表达式,并使用键 :reviewId1、:reviewId2、:reviewId3
的值填充 ExpressionAttributeValues
。
FilterExpression: "NOT ReviewId in (:reviewId1, :reviewId2, :reviewId3)"
注意:-
不幸的是,您不能将 idFilter
保留为 SET 或 LIST 以与 DynamoDB 的 String 属性进行比较。
关于java - AWS DynamoDB 扫描 FilterExpression 在列表中的字符串上使用不等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761515/