DynamoDB Java 筛选器列表 - 示例



我目前的模式如下:

  • 用户 ID: 哈希键
  • 日期:范围键
  • 标签:字符串列表

我正在尝试运行一个查询,该查询获取具有哈希键、范围键和一个或多个特定标签字符串的项目。 例如:用户(123),自(1/13/2015),标签(重要,有趣)

根据我的理解,DynamoDB 最多可以提供 2 个索引(全局或本地),因此我需要使用筛选器。

仅当标签完全相同(而不是列表中的一个项)时,运行以下代码才有效。

List <String>labels=new ArrayList<String>();
labels.add("fun");
labels.add("important");
Map<String,AttributeValue> expressionAttributeValues=new HashMap<>();
expressionAttributeValues.put(":pr", new AttributeValue().withSS(labels));
queryRequest.withFilterExpression("labels IN (:pr)");
queryRequest.withExpressionAttributeValues(expressionAttributeValues);

你能举个例子来过滤列表属性(与SS)吗?

请尝试使用以下语法。它对我有用。

expressionAttributeValues.put(":pr", new AttributeValue().withSS(labels));
queryRequest.withFilterExpression("contains(labels, :pr"));

如果您仍然没有找到解决方案,请再提出一个建议。将List<String>作为逗号分隔的字符串值传递到 IN 子句中,这将起作用。

最新更新