我有一个基本DDB表Attachment
,它有两个字段,分别称为customerState
和isIntermediateState
。
客户状态可以是Attaching
、Detaching
、Attached
和Detached
。中间状态可以是1
(如果是customerState == Attaching || Detaching
)或0
(如果是customerState == Attached || Detached
)。
customerState将从连接/分离-〉连接/分离。
现在,我想构造一个GSI,其中,如果isIntermediateState = 1,我只想从基本Attachment
表中添加记录,并在isIntermediateState = 0或customerState变为Attached || Detached
时删除记录(最终)。
DynamoDb中的GSI是否允许根据基表中字段的值有条件地在索引中添加和删除记录?此外,它是否会在基表更新时继续更新索引,还是仅在最初添加记录时才决定是否添加到索引?
1条答案
按热度按时间nnsrf1az1#
不存在基于表达式的条件投影。您可以拥有一个稀疏的GSI分区关键字属性,该属性只存在于您决定填充它的项上,基于您喜欢的任何逻辑。
属性存在?转到GSI。属性不存在?不转到GSI。
因此,基本上是将GSI1PK属性添加到其他值指示它应该在GSI中的项。