我希望使用我在查询中创建的二级索引来请求我的DynamoDB表。
截至目前,对于我正在做的单个二级索引:
response = dynamodb.Table('TABLE').query(
IndexName='permaname-index',
KeyConditionExpression=Key('permaname').eq(permaname)
)
我会像这样构建我的KeyConditionExpression:
KeyConditionExpression=Key('permaname').eq(permaname) & Key('source').eq(source)
我一遍又一遍地阅读这篇文档,但我无法弄清楚该怎么做:
和
答案 0 :(得分:2)
DynamoDB查询(即查询API参数)可以一次从单个资源(即表或GSI)获取数据。换句话说,您无法在单个Query参数中从多个表或GSI中检索数据。 DynamoDB Query一次只能引用一个资源。
与可以引用多个表的RDBMS不同,DynamoDB不能同时引用多个表或GSI(即在单个查询中)。
由于这个原因,DynamoDB具有在GSI的主表中包含所有属性的功能。在为表创建GSI时,可以使用ProjectionType
将表中的所有属性包含在GSI中。
ProjectionType:ALL
GSI查询示例: -
response = table.query(
IndexName='Movies_Gsi',
KeyConditionExpression=Key('title').eq('Movie with nested map') & Key('yearkey').eq(2017)
)