Как запросить больше, чем сортировать ключ в DynamodB с Boto3 - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть таблица DynamodB со строковым первичным ключом с именем name и ключом сортировки чисел age. Я хочу получить элементы в таблице dynamicodb с age моложе 30. Я понимаю, что поскольку мой фильтр работает с ключом, я могу использовать запрос вместо сканирования.

Поэтому я попытался: response = table .query (KeyConditionExpression = Key ('age'). lt (decimal.Decimal (30))) response

Но это возвращает ответ:

ClientError: An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: name

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

Какой код используется для этого в boto3?

1 Ответ

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

Да, это правда. query нужен ключ раздела, поскольку он работает только на указанном c разделе.

Вам необходимо использовать scan и filter в вашем случае использования, но это может быть немного дорого в зависимости от размера вашей таблицы.

Идеальным решением было бы отслеживать все ключи разделов и выполнять параллельные запросы к ним.

...