我正在基于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
添加回答
举报
0/150
提交
取消