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

17
我可以通过DynamoDB控制台查询GSI,如屏幕截图所示。 屏幕截图:查询 当我在终端上使用以下代码运行相同的查询时:
table.query(
    IndexName='date-timestamp-index',
    KeyConditionExpression=Key('date').eq('20161231'),
    FilterExpression=Attr('timestamp').between(1483130000, 1483133600) & Attr('tags').exists()
)

我遇到了一个ValidationException异常:

Filter Expression can only contain non-primary key attributes: Primary key attribute: timestamp

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

1个回答

22

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


1
我原本以为 "KeyConditionExpression" 只适用于分区键。谢谢。 - onurmatik
1
但是我该如何按时间戳进行过滤呢?- 我想获取所有尚未过期的产品... - Janis Basis Basovs
2
@JanisBasisBasovs 你可以使用KeyConditionExpression来进行筛选,就像使用“正常筛选器”一样。 - brokenprocedure
如果你想要做不等于,即使这样也是不可能的。 - Sandeep Balagopal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接