Amazon web services 二次索引上的DynamoDB扫描(GSI)

Amazon web services 二次索引上的DynamoDB扫描(GSI),amazon-web-services,amazon-dynamodb,dynamodb-queries,secondary-indexes,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,Secondary Indexes,我正在阅读有关扫描的文档,文档的开头是: 扫描操作通过访问表或辅助索引中的每个项来返回一个或多个项和项属性 这让我想知道,在什么情况下扫描二级索引会返回与普通表不同的记录集 Scan不支持KeyConditionExpression,只支持FilterExpression—这基本上是在检索数据之后发生的 那么,扫描GSI与表之间的对比意味着什么呢?扫描可能会在GSI上返回与基表不同的结果,因为GSI可以是 GSI对基表设置了不同的键。仅当项目上存在GSI密钥时,项目才会写入GSI。否则将忽略它,

我正在阅读有关扫描的文档,文档的开头是:

扫描操作通过访问表或辅助索引中的每个项来返回一个或多个项和项属性

这让我想知道,在什么情况下扫描二级索引会返回与普通表不同的记录集

Scan不支持KeyConditionExpression,只支持FilterExpression—这基本上是在检索数据之后发生的


那么,扫描GSI与表之间的对比意味着什么呢?

扫描可能会在GSI上返回与基表不同的结果,因为GSI可以是


GSI对基表设置了不同的键。仅当项目上存在GSI密钥时,项目才会写入GSI。否则将忽略它,这意味着GSI中的数据可能比基表中的数据少

假设一个基表具有分区属性
a
和排序键
B
。该表上的GSI具有分区属性
C
,并且没有排序键。如果项目仅具有属性
A
B
的值,而不具有属性
C
,则该项目不会出现在GSI中


编辑:我提供的链接中使用的AWS示例是LSI。我使用了一个GSI的例子,因为它是在问题中。原理是一样的。

“只有当项目上存在GSI键时,项目才会写入GSI”-我认为如果缺少任何键字段,就不可能写入记录…发生了某种错误。该链接似乎暗示这是可能的,但没有解释如何实现。我想这仍然回答了基本的问题。一个项必须具有基表的键属性,但GSI键属性是可选的。