我正在基于LSI对dynamo执行查询表达式,并且LSI的投影类型被设置为包含。如何在运行时将LSI投影更改为包含所有?我看到projectionExpression可以更改,但.if可行吗?是的,请告诉我
Projection projection = new Projection().withProjectionType(ProjectionType.ALL);
queryExpression.setProjectionExpression()发布于 2019-10-30 08:42:45
你不能这么做。您的投影属性在写入时被复制到您的LSI中,因此尝试在运行时读取其他投影值是在请求不存在的数据。
dynamo中的索引仅仅是针对另一个键插入的数据的副本。Dynamo在幕后管理这种复制,并保持索引和主表保持同步。
,您将需要使用LSI重新创建您的表,以实现所有的。我相信您使用的投影API是用于所有项目时使用的,但可能希望返回所有项目的子集。
投影是将表复制到辅助索引中的一组属性。表的分区键和排序键总是投影到索引中;您可以投影其他属性以支持应用程序的查询需求。当查询索引时,Amazon可以访问投影中的任何属性,就好像这些属性位于自己的表中一样。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
https://stackoverflow.com/questions/58618672
复制相似问题