Действительно, вы не можете использовать FilterExpression
над ключом диапазона (InvoiceDate
). Но причина этого не в том, что это невозможно сделать - причина, по которой это запрещено, состоит в том, чтобы предотвратить дорогостоящую ошибку:
Чтобы запросить только диапазон вашего ключа диапазона, вы должны использовать KeyConditionExpression
, а не FilterExpression
.
Использование KeyConditionExpression
быстрее и дешевле, потому что DynamoDB извлекает только совпадающие элементы, тогда как FilterExpression
будет читать (и взимать с вас) все раздел. Вот почему «ключи диапазона» называются «ключами диапазона» - они позволяют вам эффективно запрашивать диапазон этого ключа. Их также называют «ключом сортировки», потому что они не просто определяют диапазоны - они фактически сортируются.