为了账号安全,请及时绑定邮箱和手机立即绑定

在运行时更改 LSI 投影类型

在运行时更改 LSI 投影类型

慕桂英546537 2024-01-05 19:56:13
我正在基于LSI的dynamo DB上进行查询表达式,并且LSI的投影类型设置为INCLUDE。如何在运行时将 LSI 投影更改为 INCLUDE ALL?。我看到projectionExpression 可以更改,但是否可行。如果是,请告诉我Projection projection = new Projection().withProjectionType(ProjectionType.ALL); queryExpression.setProjectionExpression()
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

你不能这样做。您的投影属性会在写入时复制到 LSI 中,因此尝试在运行时读取其他投影值会要求获取不存在的数据。

dynamo 中的索引只是针对另一个键插入的数据的副本。Dynamo 在幕后管理这种重复,并使索引和主表保持同步。

您需要使用投影 ALL 的 LSI 重新创建表。我相信您使用的投影 API 适用于投影所有内容但可能希望返回所有内容的子集。

投影是从表复制到二级索引的属性集。表的分区键和排序键始终投影到索引中;您可以投影其他属性来支持应用程序的查询要求。当您查询索引时,Amazon DynamoDB 可以访问投影中的任何属性,就像这些属性位于其自己的表中一样。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信