当前位置: 首页 > 知识库问答 >
问题:

dynamoDB查询的多个二级索引

江恩
2023-03-14

我希望使用DynamoDB表来请求我在查询中创建的二级索引。

从现在开始,对于我正在做的一个二级索引:

response = dynamodb.Table('TABLE').query(
    IndexName='permaname-index',
    KeyConditionExpression=Key('permaname').eq(permaname)
)

我会像这样构建我的KeyConditionExpression:

KeyConditionExpression=Key('permaname').eq(permaname) & Key('source').eq(source)

我读了一遍又一遍这份文件,但我不知道怎么做:

https://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.04.html

https://boto3.readthedocs.io/en/latest/

共有1个答案

微生鸿轩
2023-03-14

DynamoDB查询(即查询API参数)一次可以从单个资源(即表或GSI)获取数据。换句话说,您不能在一个查询参数中从多个表或GSI检索数据。DynamoDB查询一次只能引用一个资源。

与可以引用多个表的RDBMS不同,DynamoDB不能同时引用多个表或GSI(即在一个查询中)。

由于这个原因,DynamoDB有一个特性,可以在GSI的主表中包含所有属性。在为表创建GSI时,可以使用ProjectionType将表中的所有属性包含到GSI中。

项目类型:全部

GSI查询示例:-

response = table.query(
    IndexName='Movies_Gsi',
    KeyConditionExpression=Key('title').eq('Movie with nested map') & Key('yearkey').eq(2017)
)
 类似资料:
  • 我的主键是一个名为“ID”的字段 我在表中的字段“group_number”上添加了一个辅助索引 我通过二级索引进行查询,如下所示: 然而;我得到错误“ValidationException:query condition missed key schema Element:ID” DynamoDB只允许查询主键吗?我的印象是您使用“getitem”作为主键,因为如果您使用一个主键,只有一个记录可

  • 本文(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.html)讨论一种通过引入一个随机整数作为分区键,在多个分区之间对全局二级索引值进行分片的技术。 这对我来说是有意义的,但本文没有清楚地解释如何查询该索引。假设我使用一个1-10的随机整数作为分区键,一个数字作为排序

  • 我有以下带有三个全局二级索引(GSI)的DyamoDB表 Id(主键)、user_id(GSI)、event_type(GSI)、product_id(GSI)、rate、create_date 我有以下三种查询模式: null null

  • 我正在DynamoDB中创建一个表和GSI,使用以下参数,如文档所示: 是表的主键,我使用作为GSI的主键。(为了简洁起见,我删除了一些不必要的配置参数) 我正在使用以下命令查询此表: 但我一直在犯错误: "一个或多个参数值无效:条件参数类型与模式类型不匹配" 在文档中,它指定主可以是或,并且您可以在字段中设置。我正在以的形式发送,不确定这里缺少了什么。 问题是在我创建表的方式上,还是在我查询表的

  • 是否有一种方法可以使用查询dynamodb的。我找不到任何在线教程或资源。

  • 我有一个AWS DynamoDb购物车表,其项目结构如下- - 该表将作为主键, 作为索引或GSI, 作为索引或GSI。 我希望能够查询购物车表, 查找的项目。 我不知道这是否意味着查询- 我知道AWS DynamoDb表不能同时使用多个索引进行查询, 我遇到了以下问题,它有一个类似的用例,答案是建议创建一个复合键, 使用多个本地辅助索引DynamoDb进行查询 这是否意味着在将新项放入表中时,