是否可以针对Amazon DynamoDB运行UpdateItem请求,并且该条件在项目尚不存在时始终会成功。例如:
long timestampNow = System.currentTimeMillis();
UpdateItemSpec updateItemSpec = new UpdateItemSpec()
.withPrimaryKey("primary_key", theKey)
.withReturnValues(ReturnValue.ALL_NEW)
.withAttributeUpdate(
new AttributeUpdate("my_attr").put(timestampNow+SOME_DURATION))
.withExpected(
new Expected("my_attr").lt(timestampNow));
try {
UpdateItemOutcome outcome = AWS.DYNAMO_DOC.getTable("my_table").updateItem(updateItemSpec);
return outcome.getUpdateItemResult().getAttributes();
} catch (ConditionalCheckFailedException e) {
return null;
}
当我对尚未存在的项目发出请求时,它会抛出ConditionalCheckFailedException
,但我希望它通过条件测试并继续创建项目。这可能吗?
答案 0 :(得分:0)
文档实际上包含了我需要知道的所有内容:
aggregate([
{
'$project': {
newFieldName: {'$dateToString': {format: '%Y-%m-%d', date: '$yourDateFieldName'}}
}
}, {
'$group': {
_id: {newFieldName: '$newFieldName'},
viewCount: {'$sum': 1}
}
},
{'$sort': {'_id.newFieldName': 1}}
], {})