DynamoDB唯一主键(哈希+排序)的条件更新和第三个属性的条件

时间:2018-07-18 11:07:48

标签: amazon-dynamodb

我有一个DDB表,其中既有分区键又有排序键,另一个属性是“时间戳”。

我想

  1. 如果没有相同(分区+排序)键的记录,请保存新记录
  2. 如果已经存在具有相同(分区+排序)键的记录,则仅在时间戳记比现有记录新时才更新。
  3. 如果两个条件均失败,则应获取ConditionalCheckFailedException。

我正在使用DynamoDBMapper。使用DynamoDBMapper可以做到吗?

我当前的DynamoDBSaveExpression代码如下:

    private DynamoDBSaveExpression getTimeConstraintsSaveExpression(final String timestamp) {
    final ExpectedAttributeValue expectedTimestampAttribute = new ExpectedAttributeValue()
            .withComparisonOperator(ComparisonOperator.LT)
            .withValue(new AttributeValue().withS(timestamp));

    final Map<String, ExpectedAttributeValue> expectedAttributes =
            ImmutableMap.<String, ExpectedAttributeValue>builder()
                    .put(PARTITION_KEY_ATTRIBUTE,
                            new ExpectedAttributeValue(false))
                    .put(RECORD_TIME, expectedTimestampAttribute)
                    .build();

    return new DynamoDBSaveExpression()
            .withExpected(expectedAttributes)
            .withConditionalOperator(ConditionalOperator.OR);
}

输入的时间戳参数是我要保存/更新的记录的RECORD_TIME属性的值。

0 个答案:

没有答案