我正在基于LSI的dynamo DB上進(jìn)行查詢表達(dá)式,并且LSI的投影類(lèi)型設(shè)置為INCLUDE。如何在運(yùn)行時(shí)將 LSI 投影更改為 INCLUDE ALL?。我看到projectionExpression 可以更改,但是否可行。如果是,請(qǐng)告訴我Projection projection = new Projection().withProjectionType(ProjectionType.ALL);
queryExpression.setProjectionExpression()
1 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
你不能這樣做。您的投影屬性會(huì)在寫(xiě)入時(shí)復(fù)制到 LSI 中,因此嘗試在運(yùn)行時(shí)讀取其他投影值會(huì)要求獲取不存在的數(shù)據(jù)。
dynamo 中的索引只是針對(duì)另一個(gè)鍵插入的數(shù)據(jù)的副本。Dynamo 在幕后管理這種重復(fù),并使索引和主表保持同步。
您需要使用投影 ALL 的 LSI 重新創(chuàng)建表。我相信您使用的投影 API 適用于投影所有內(nèi)容但可能希望返回所有內(nèi)容的子集。
投影是從表復(fù)制到二級(jí)索引的屬性集。表的分區(qū)鍵和排序鍵始終投影到索引中;您可以投影其他屬性來(lái)支持應(yīng)用程序的查詢要求。當(dāng)您查詢索引時(shí),Amazon DynamoDB 可以訪問(wèn)投影中的任何屬性,就像這些屬性位于其自己的表中一樣。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html
添加回答
舉報(bào)
0/150
提交
取消