Query与Scan操作

Query命令

  • 根据定义,Item collection只能存在于同时具有分区键和排序键的表中。

  • 我们可以使用 Querty API 读取Item collection的全部或部分内容。

  • “Query"这个词通常用来表示"从数据库中读取数据”,但在 DynamoDB 中,“Query"有一个特定的含义: 读取Item Collection的全部或部分内容。

我们在之前的示例中使用的 ProductCatalog 表只有一个分区键,让我们来看看具有分区键和排序键的 Reply 表中的数据:

image-20241226161409170

选择 Reply 表,然后点击Query。该表中的数据有一个 Id 属性,引用 Thread 表中的项目。

我们的数据有两个Thread,每个Thread有 2 个回复。

让我们使用Query功能查询 Amazon DynamoDB#DynamoDB Thread 1

image-20241226161629866

我们可以看到 DynamoDB Thread 1 中有两个Item:

image-20241226161722281

由于该表中的排序键是时间戳,我们可以通过添加一个排序键条件来返回某个时间点之后发布的Thread中的回复,其中 ReplyDateTime 大于 2015-09-21,然后单击运行

image-20241226161834140

使用过滤表达式。例如,我们可以找到Thread 1 中由 User B 发布的所有回复。清除排序键条件,单击Add filter,然后使用 PostedBy 作为属性名称,条件选择 等于,值输入 User B,然后单击运行:

image-20241226162007419

Scan操作

Scan将执行完整的表扫描并以1MB块返回项目。

Scan API与Query API类似,但由于我们想扫描整个表而不是单个项目集合,因此Scan没有键条件表达式。但是,我们可以指定过滤表达式 ,这将减小结果集的大小(尽管不会减少消耗的容量)。

让我们看看Reply表中的数据,例如,我们可以找到所有由用户A发布的Reply :

image-20241226162236919

我们应该会看到3个由用户A发布的Reply