我确信这是一个非常新手的问题,所以我事先道歉,但我找不到任何人这样做的任何例子。
我在表上创建了一个列。我想找到记录在哪里它是空的或在哪里它小于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);
我认为DynamoDb目前不支持同一列上的2个过滤器…
conditions.put("lastrun", newRunsFilterCondition);
conditions.put("lastrun", exRunsFilterCondition);
Conditions
变量是一个映射,目前单个属性只能映射到单个条件。这就是为什么你不能在一列上有两个条件。
我能想到的解决方法是扫描两次,每次使用不同的过滤器。然后将结果合并到您这边。