java - AWS DynamoDB 扫描 FilterExpression 在列表中的字符串上使用不等于

标签 java amazon-web-services amazon-dynamodb aws-sdk

我有一个 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/

相关文章:

java - 为 Android 构建 Facebook 登录应用程序

java - 在 javafx 场景生成器中选择选项卡时如何执行某些操作?

c# - 在 C# ASP.NET MVC 5 中将图像上传到 S3

java - 删除黑名单/禁止用户的请求

database-design - Dynamodb表设计: nested query support

java - 如何在 Spark Web 框架和 Velocity 模板框架中创建 for 循环?

当我在 spring 批处理中使用 scpoe ="step"将 FlatFileItemWriter 配置为流时,出现 java.lang.IllegalStateException

node.js - 如何在 dynamoDB 上使用分页

amazon-web-services - 为 EC2 实例保持相同的公共(public) DNS

swift - 具有开始值和结束值的 AWS DynamoDB 查询