Dynamodb МЕЖДУ операциями для строк - PullRequest
1 голос
/ 03 октября 2019

Я не могу найти подробную документацию для оператора Dynamodb BETWEEN, особенно того, как он работает со строками.

Например, если я делаю запросы типа "... sort_key Between '100' и '150'" и ключ сортировки«120», то работает правильно. Но если я создаю строки типа «1224 | 67» или «6653 | 67», а затем запрашиваю между «3456 | 67» и «8968 | 67», это не сработает. Как получить информацию о внутреннем сравнении?

1 Ответ

0 голосов
/ 07 октября 2019

В вашем случае вам нужно использовать имена атрибутов выражений и значения атрибутов выражений . Это очень хорошая практика в любом запросе DynamoDB.

Обратите внимание, что вам также необходимо установить ключ раздела (см. #pk и :pk ниже).

aws dynamodb query \
    --table-name TABLE_NAME \
    --key-condition-expression "#pk = :pk AND #sk BETWEEN :a and :b" \
    --expression-attribute-names '{"#sk": "sort_key", "#pk": "partition_key"}' \
    --expression-attribute-values '{":a": {"S":"3456|67"}, ":b": {"S":"8968|67"}, ":pk":{"S":"partition_key_value"}}'

Я не использовал этот синтаксис какое-то время, возможно, есть небольшая синтаксическая ошибка, но это то, что вам нужно сделать, чтобы запросить с помощью BETWEEN.

См. последний пример о KeyConditions :

aws dynamodb query \
    --table-name Music \
    --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":a": {"S": "No One You Know"}, 
        ":t1": {"S": "A"}, 
        ":t2": {"S": "M"}
    }'
...