当您希望使用如下条件时,是否可以使用DynamoDB映射器进行条件写入/更新:如果属性不等于X,则写入? 我想做一个像这样的条件写:
DynamoRecord record = mapper.load(DynamoRecord.class, hashKey);
if (record.getSomeAttr() != terminationValue) {
mapper.save(newRecord);
}
该属性始终存在。它可以有多个值,表示记录更新应该停止的条件。
我阅读了this article和AWS documentation以及其他一些帖子,但似乎只支持==
运算符和exists check。是否可以使用映射器进行!=
条件写入?如果是这样,任何指针都非常感激。
感谢。
来自@ notionquest的回复
ComparisonOperator.NE
@DynamoDBNativeBoolean
对其进行注释,以便在使用ExpectedAttributeValue(new AttributeValue().withBool(true))
时获得正确的结果。有关详细信息,请参阅here。答案 0 :(得分:2)
请使用" withComparisonOperator(ComparisonOperator.NE)"对于NOTEQUALS条件。请参阅以下示例。
DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
Map expected = new HashMap();
expected.put("Status",
new ExpectedAttributeValue(new AttributeValue(status)).withComparisonOperator(ComparisonOperator.NE));
saveExpression.setExpected(expected);
dynamoDBMapper.save(obj, saveExpression);
答案 1 :(得分:0)
DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
Map expected = new HashMap();
expected.put("Status",new ExpectedAttributeValue(new AttributeValue('NE')));
saveExpression.setExpected(expected);
dynamoDBMapper.save(obj, saveExpression);