我目前的模式如下:
- 用户 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 子句中,这将起作用。