如何从DynamoDB中的分区键列表中获取属性-扫描是我唯一的选择吗?

时间:2018-11-20 23:20:37

标签: amazon-dynamodb

我有一张表中的分区键列表。

userId["123","456","235"]

我需要获得他们都共享的属性。例如“用户名”。

一次获得所有内容的最佳实践是什么?

知道我知道所有分区键后是否扫描我唯一的选择?

  

我知道排序键吗?是的,但仅仅是开始。所以我   不要以为我可以使用batchGetItem。

2 个答案:

答案 0 :(得分:1)

仅当您不知道分区键时才进行扫描。因为您知道要搜索的分区键,所以可以通过多次Query操作来实现所需的行为。

查询使用指定的分区键搜索所有文档;您只能为每个请求查询一个分区键,因此您将需要多个查询,但这仍然比单个“扫描”操作有效得多。

如果您只查找带有以某些东西开头的排序键的文档,则可以将其与分区键一起包括在KeyConditionExpression中。

例如,如果您只想返回其排序键以某个字符串开头的文档,则可以传递诸如userId = :user_id AND begins_with(#SortKey, :str)之类的键条件表达式。

答案 1 :(得分:0)

您可以使用 PartQL SELECT 语句有效地实现结果。它允许使用 IN 运算符查询分区键数组并对其他属性应用附加条件,而不会导致全表扫描。

<块引用>

确保SELECT语句不会产生全表 扫描,WHERE 子句条件必须指定一个分区键。使用 等式或 IN 运算符。