我确信这是一个非常noob的问题,所以我在前面道歉,但我找不到任何人在做这个的例子。
我在桌子上创建了一个列lastrun。我想找到它是null的记录或者它小于x的记录。我无法弄清楚如何运行它,因为它似乎只评估我的两个条件之一,因为当我将第二个条件放在地图中时,同一个列的相同键会覆盖我在地图中的第一个条目。我错过了什么?
Condition newRunsFilterCondition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ.toString())
.withAttributeValueList(new AttributeValue().withN("0"));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, -1);
Condition exRunsFilterCondition = new Condition()
.withComparisonOperator(ComparisonOperator.LT.toString())
.withAttributeValueList(new AttributeValue().withN("" + cal.getTime().getTime()));
Map<String, Condition> conditions = new HashMap<String, Condition>();
conditions.put("lastrun", newRunsFilterCondition);
conditions.put("lastrun", exRunsFilterCondition);
ScanRequest scanRequest = new ScanRequest()
.withTableName("DataLoaderSchedule")
.withScanFilter(conditions).withConditionalOperator("OR");
ScanResult result = client.scan(scanRequest);
答案 0 :(得分:1)
我不认为DynamoDb目前支持同一列上的2个过滤器......
conditions.put("lastrun", newRunsFilterCondition);
conditions.put("lastrun", exRunsFilterCondition);
Conditions
变量是一个地图,目前单个属性只能映射到一个条件。这就是为什么你不能在一列上有两个条件。
我能想到的解决方法是你进行两次扫描,每次使用不同的滤镜。然后将结果合并到您的身边。