Я хочу получить список элементов из таблицы Dynamodb на основе некоторых фильтров. В фильтрах у меня есть список хэш-ключей (должны быть возвращены записи, содержащие один из этих хэш-ключей) и еще несколько фильтров для записи, например, поле «статус», имеющее значение «одобрено». Таким образом, если элемент имеет хэш-ключ из моего списка И значение поля статуса "одобрено", оно должно быть возвращено.
Как я могу это сделать?
Я не могу использовать QUERY, потому что, как я понимаю, он ожидает только одно значение хеш-ключа.
Я не могу использовать BatchGet, потому что он не принимает выражения фильтра.
AWS Dynamodb BatchGet с FilterExpression
Ответы (1)
Вы можете использовать BatchGet
, чтобы получать элементы и фильтровать их своей собственной функцией.
Операция запроса может получить максимум 1 МБ данных. Это ограничение применяется до оценки выражения фильтра.
Как видите, использование выражения фильтра не может помочь вам получить больше данных, что также не может сэкономить вашу емкость чтения (деньги). Поэтому я думаю, что нет никакой разницы, фильтровать локально или на стороне сервера.
Если вы хотите, чтобы динамо-машина выполняла за вас тяжелую работу по фильтрации данных, вы можете попробовать "multi-query"
вместо BatchGet
.
Вот несколько соответствующих ссылок: В чем разница между BatchGetItem и Запрос в DynamoDB?
person
Sky.Li
schedule
28.04.2018