在运行时更改 LSI 投影类型

我正在基于LSI的dynamo DB上进行查询表达式,并且LSI的投影类型设置为INCLUDE。如何在运行时将 LSI 投影更改为 INCLUDE ALL?。我看到projectionExpression 可以更改,但是否可行。如果是,请告诉我

Projection projection = new Projection().withProjectionType(ProjectionType.ALL);

queryExpression.setProjectionExpression()


慕桂英546537
浏览 54回答 1
1回答

函数式编程

你不能这样做。您的投影属性会在写入时复制到 LSI 中,因此尝试在运行时读取其他投影值会要求获取不存在的数据。dynamo 中的索引只是针对另一个键插入的数据的副本。Dynamo 在幕后管理这种重复,并使索引和主表保持同步。您需要使用投影 ALL 的 LSI 重新创建表。我相信您使用的投影 API 适用于投影所有内容但可能希望返回所有内容的子集。投影是从表复制到二级索引的属性集。表的分区键和排序键始终投影到索引中;您可以投影其他属性来支持应用程序的查询要求。当您查询索引时,Amazon DynamoDB 可以访问投影中的任何属性,就像这些属性位于其自己的表中一样。https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java