Выражения фильтра не поддерживаются в BatchGetItem
. Думайте о BatchGetItem
как о пакетной версии операции GetItem
. GetItem
поддерживает получение только элемента на основе его первичного ключа.
В вашем примере, если столбец status
не является частью первичного ключа, то BatchGetItem
или GetItem
не будут работать для вас.
Если таблица задач в вашем примере имеет id в качестве ключа раздела и status в качестве обычного столбца, существует несколько способов достижения одного и того же результата в зависимости от размера таблицы. и количество предметов, которые вы ожидаете вернуть обратно.
Используйте BatchGetItem
с фильтрацией элементов в коде
Если количество элементов ввода относительно мало, вы можете просто использовать BatchGetItem
, а затем отфильтровать в коде (здесь в VTL) те, где status!=done
.
Плюсы : Вам не нужно менять схему таблицы или добавлять индексы
Минусы : Вы будете платить за все Единицы считывания емкости, необходимые для извлечения элементов перед фильтрацией. Также будет задержка, так как ваш API будет загружать потенциально ненужные элементы.
Использование Scan
С выражением IN
Если таблица небольшая, вы можете отсканировать всю таблицу и предоставить выражение фильтра IN.
Плюсы : Вам не нужно менять схему таблицы или добавлять индексы
Минусы : Вам придется сканировать всю таблицу, это будет медленно и дорого для больших таблиц.
Эти рекомендации действительны, если вы не хотите изменять схему ключей таблицы.