DynamoDB:过滤器表达式只能包含非主键属性

oma*_*mat 8 amazon-dynamodb boto3

我可以通过 DynamoDB 控制台查询 GSI,如屏幕截图所示。

截图:查询

当我使用以下代码在终端上使用 Boto3 运行相同的查询时:

table.query(
    IndexName='date-timestamp-index',
    KeyConditionExpression=Key('date').eq('20161231'),
    FilterExpression=Attr('timestamp').between(1483130000, 1483133600) & Attr('tags').exists()
)
Run Code Online (Sandbox Code Playgroud)

我得到一个ValidationException例外:

Filter Expression can only contain non-primary key attributes: Primary key attribute: timestamp
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?谢谢。

小智 10

您的timestamp字段是表的排序键,因此不能在 FilterExpression 中使用。它必须是 KeyConditionExpression 的一部分。

  • @JanisBasisBasovs,您可以使用 KeyConditionExpression 进行过滤,就像使用“普通过滤器”一样 (2认同)