【问题标题】:AWS DynamoDB scan FilterExpression use not equals on String in listAWS DynamoDB 扫描 FilterExpression 在列表中的字符串上使用不等于
【发布时间】:2017-03-13 10:36:39
【问题描述】:

我有一个 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 的项目。 我还尝试在 &lt;&gt; 运算符之前和之后包含单词 in

【问题讨论】:

  • ReviewId 属性是 DynamoDB 数据类型 SET 还是 LIST ?
  • @notionquest ReviewID 是字符串类型表中的主分区键。

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


【解决方案1】:

您可以如下更改过滤器表达式,并使用键 :reviewId1, :reviewId2, :reviewId3 的值填充 ExpressionAttributeValues

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

注意:-

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

【讨论】:

  • 这是很好的信息,为什么 AWS 文档中没有记录。很烦人。
猜你喜欢
  • 1970-01-01
  • 2018-08-23
  • 2021-03-06
  • 2018-02-05
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
相关资源
最近更新 更多