Выражения условий в DynamoDb - PullRequest
       0

Выражения условий в DynamoDb

0 голосов
/ 25 февраля 2020

У меня есть тестовая таблица DynamodB, описанная таким образом:

    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "p_key",
                "AttributeType": "S"
            },
            {
                "AttributeName": "s_key",
                "AttributeType": "S"
            }
        ],
        "TableName": "test_table",
        "KeySchema": [
            {
                "AttributeName": "p_key",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "s_key",
                "KeyType": "RANGE"
            }
        ],
        "TableStatus": "ACTIVE",
        "CreationDateTime": 1582577061.111,
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 5,
            "WriteCapacityUnits": 5
        },
        "TableSizeBytes": 0,
        "ItemCount": 0,
        "TableArn": "arn:aws:dynamodb:us-west-2:XXXXXX:table/test_table",
        "TableId": "e5a518fc-4411-4218-b7ff-XXXXXX"
    }
}

Я пытаюсь выполнить sh запрос put_item и проверяю наличие другого неиндексного значения. В таблице, описанной выше, допустим, у меня есть элемент:

    "Items": [
        {
            "p_key": {
                "S": "test"
            },
            "s_key": {
                "S": "0"
            },
            "test_value": {
                "N": "123"
            }
        }
    ],
    "Count": 1,
    "ScannedCount": 1,
    "ConsumedCapacity": null
}

Я хочу создать новый элемент с новым ключом сортировки (s_key), только если он не имеет уже существующего значения в базе данных. , Итак, я попробовал следующее:

aws dynamodb put-item \
    --item '{"p_key": {"S":"test"}, "s_key": {"S": "1"}, "test_value":{"N":"123"}}' \
    --table-name test_table \
    --condition-expression "#tv <> :v" \
    --expression-attribute-values '{":v":{"N":"123"}}' \
    --expression-attribute-names '{"#tv":"test_value"}'

Но условие не соответствует и запись записывается. Подобные тесты, но с сортировкой или ha sh keep, по-видимому, эффективно предотвращают запись.

Может кто-нибудь указать, что мне не хватает?

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