Арифметическая c операция в выражении условия DynamoDb Использование AWS SDK для Java - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть таблица 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"

1 Ответ

1 голос
/ 22 февраля 2020

Согласно документам эта арифметическая операция c не поддерживается.

Обходной путь - создать поле total_record_count, которое необходимо вычислять и добавлять к каждому новому созданному элементу. , Также добавить его ко всем существующим элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...