Допустим, у нас есть таблица с item
s, у которой есть атрибут userId
(ключ раздела, строка) и атрибут creationTime
(ключ сортировки, число). Я хотел бы выполнить запрос, который извлекает элементы пользователя от времени t1
до времени t2
по вторичному индексу.
Поскольку я не могу иметь несколько условий диапазона для одного и того же элемента, моя идея состояла в том, чтобы добавить выражение фильтрации, чтобы ограничить результаты:
aws dynamodb query --table-name items --index-name userId-creationTime-index --key-condition-expression "userId=:u AND creationTime<=:t1" --filter-expression "creationTime>=:t2" --expression-attribute-values '{":u":{"S":"6f3b581d-8632-4edc-a19d-b77f158d8a23"}, ":t1":{"N":"1456647476000000"}, ":t2":{"N":"1456561076000000"}}'
Запрос не работает с
A client error (ValidationException) occurred when calling the Query operation: Filter Expression can only contain non-primary key attributes: Primary key attribute: creationTime
Это очень странно. Разве фильтрация не ограничивает результат после выполнения запроса? Разве нельзя реализовать такое условие, как t1 <= creationDate <= t2
?