我正在基于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 重新創(chuàng)建表。我相信您使用的投影 API 適用于投影所有內容但可能希望返回所有內容的子集。
投影是從表復制到二級索引的屬性集。表的分區(qū)鍵和排序鍵始終投影到索引中;您可以投影其他屬性來支持應用程序的查詢要求。當您查詢索引時,Amazon DynamoDB 可以訪問投影中的任何屬性,就像這些屬性位于其自己的表中一樣。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
添加回答
舉報
0/150
提交
取消