在 dynamoDB 中使用 "contains" 作为查询键条件

using "contains" for query key condition in dynamoDB

我正在尝试使用包含比较参数查询我的 dynamodb,但它不起作用

data= table.query(
    IndexName='farm_name-index',
    KeyConditionExpression = Key('user_name').eq(user_name)& contains(Key('farm_zone_id_time_stamp'),farm_zone_id_time_stamp)& Key('time_stamp').between(from_time,to_time) 
    )

我收到以下错误:

name 'contains' is not defined: NameError
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 25, in lambda_handler
    KeyConditionExpression = Key('user_name').eq(user_name)& contains(Key('farm_zone_id_time_stamp'),farm_zone_id_time_stamp)& Key('time_stamp').between(from_time,to_time)
NameError: name 'contains' is not defined

谁能告诉我正确的方法吗?

您不能对排序键执行包含操作。您只能执行相等、begins_with 或比较运算符。

这是来自文档的列表: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.KeyConditionExpressions

为什么?因为这些运算符可以有效地从排序列表中提取数据,例如放在排序键下。

借助 DynamoDB,您可以对包含之类的内容使用过滤器表达式。它不是索引优化的。