我有一个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属性进行比较。

09-07 07:59