繁体   English   中英

使用适用于 Java 的 AWS 开发工具包在条件表达式 DynamoDb 中进行算术运算

[英]Arithmetic operation in condition expression DynamoDb Using the AWS SDK for Java

我有一个 dynamodb 表,我想使用 aws sdk java 库对其进行条件更新操作。 我有一个名为“Id”的哈希键和名为“Sk”的排序键的表。 我在表中有 5 个其他字段,我必须根据剩余字段的条件更新 2 个字段。 条件是“total_record_count = record_passed + records_failed”,其中total_record_count、record_passed和records_failed是表中的字段。 下面是代码

DynamoDB dynamoDB = new DynamoDB(amazonDynamoDB);
        Table table = dynamoDB.getTable("ciw_ocrResponse_upload");

        Map<String, String> expressionAttributeNames = new HashMap<String, String>();
        expressionAttributeNames.put("#updatedAt", "updatedAt");
        expressionAttributeNames.put("#statusOfTracker","statusOfTracker");

        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        Map<String, Object> eav = new HashMap<>();
        eav.put(":val1", value);
        eav.put(":val2", timestamp.getTime());


        UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("Id", requestId, "Sk", sortKey)
                .withUpdateExpression("set #updatedAt = :val2, #statusOfTracker = :val1")
                .withValueMap(eav)
                .withNameMap(expressionAttributeNames)
                .withConditionExpression(" total_record_count = record_passed + records_failed")
                .withReturnValues(ReturnValue.UPDATED_NEW);

        table.updateItem(updateItemSpec);
I am getting the error as Invalid ConditionExpression: Syntax error; token: "+", near: "record_passed + records_failed"

根据文档,不支持此算术运算。

解决方法是创建一个total_record_count字段,您需要计算并添加创建的每个新项目。 还可以将其添加到所有现有项目中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM