Java 仅当密钥已存在时更新数据库

Java 仅当密钥已存在时更新数据库,java,amazon-web-services,amazon-dynamodb,Java,Amazon Web Services,Amazon Dynamodb,只有当key存在时,我才需要更新dynamodb,如果key不存在,我不想创建新行 我的语法是: PrimaryKey pk = new PrimaryKey("partitionKey", key1, "sortKey", key2); String updateExpression = "set abc =:s"; String value = "xyz"; UpdateItemSpec updateItemS

只有当key存在时,我才需要更新dynamodb,如果key不存在,我不想创建新行

我的语法是:

PrimaryKey pk = new PrimaryKey("partitionKey", key1, "sortKey", key2);
String updateExpression = "set abc =:s";
String value = "xyz";

UpdateItemSpec updateItemSpec = new UpdateItemSpec()
                .withPrimaryKey(pk)
                .withUpdateExpression(updateExpression)
                .withValueMap(new ValueMap().withString(":s", value))
                .withConditionExpression(?);
table.updateItem(updateItemSpec);

我应该在条件表达式中提供什么。如何在此处使用属性_exist()。

如果新项目不存在,则更新项目API将创建新项目。可以使用ConditionExpression停止创建新项

ConditionExpression = attribute_exists(partitionKey)

如果找不到密钥,API将抛出ConditionalCheckFailedException。

更新项API将创建不存在的新项。可以使用ConditionExpression停止创建新项

ConditionExpression = attribute_exists(partitionKey)

如果找不到键,API将抛出ConditionalCheckFailedException。

我将传递
partitionKey
哪个是属性名,哪个是值?如果我还想传递排序键,你需要传递的是键而不是值。如果您想添加更多的条件,可以使用和布尔运算符将它们添加到类似于partitionKey的位置。在这里查看更详细的解释-。建议尝试检查DynamoDBMapper功能。这提供了平稳运行的条件。它将使用-@DynamoDBVersionedAttribute动态处理您的用例,此映射程序支持该属性。@Shaggy31建议为此创建一个不同的问题,以帮助社区。如果您原来的问题得到了回答,请接受:)我将传递
partitionKey
哪个是属性名,哪个是值?如果我还想传递排序键,你需要传递的是键而不是值。如果您想添加更多的条件,可以使用和布尔运算符将它们添加到类似于partitionKey的位置。在这里查看更详细的解释-。建议尝试检查DynamoDBMapper功能。这提供了平稳运行的条件。它将使用-@DynamoDBVersionedAttribute动态处理您的用例,此映射程序支持该属性。@Shaggy31建议为此创建一个不同的问题,以帮助社区。如果您的原始问题得到了回答,请接受:)