【发布时间】:2016-05-06 10:28:47
【问题描述】:
我有一个 dynamo db 表,其中 hashKey 是 userId,范围键是创建时间戳。
我们有一些遗留代码在 dynamo db 表中创建记录,并且该数据有一个字段 threadId(来自遗留数据库的主键)。
有时(感谢底层消息传递平台)我会得到具有重复 threadId 的记录,在这种情况下,我只想要生产数据库中的一条记录。
我尝试过如下设置条件:
DynamoDBSaveExpression saveExpr = new DynamoDBSaveExpression();
saveExpr.setExpected(new ImmutableMap.Builder()
.put("threadId", new ExpectedAttributeValue()
.withValue(new AttributeValue().withS(record.threadId))
.withComparisonOperator(ComparisonOperator.NE)).build());
mapper.save(record, saveExpr);
但是这不起作用。我不确定,但似乎如果 userId/created(散列/范围键)值不相同,dynamo 会创建一个新记录,而不管保存表达式(这似乎与文档不匹配)。
我做错了吗?不管哈希/范围键的值如何,有没有办法防止重复记录?
【问题讨论】:
标签: java amazon-dynamodb