DynamoDB 查询行号

DynamoDB query row number

我能否以某种方式在 DynamoDB 中获取查询响应的索引?

[hashKey exists, sortKey exists]

query { KeyCondExp = "hashKey = smthin1", FilterExp = "nonPrimeKey = smthin2" }

我需要根据所选文档的 sortKey 的行索引

当 DynamoDB Query 请求 return 一个项目时 - 在您的示例中由特定过滤器选择 - 它将 return 完整项目,包括排序键。如果这就是您所说的“根据 sortKey 的行索引”,那么您就完成了。

但是,如果“索引”指的是数字索引 - 即,如果该项目是此分区中的第 100 个排序键(散列键),则你想要 return 数字 100 - 嗯,那是你做不到的。 DynamoDB 将行保存在分区 sorted 中按排序键,但不编号。您可以在 million-row 分区的中间插入一个项目,它将插入到正确的位置,但 DynamoDB 不会为了维护数字索引而费心重新编号 million-row 列表。

但是还有一件事你应该知道。在您描述的查询中,您只使用 FilterExpression 到 return 整个分区中的特定行。有了这样的请求,Amazon 将向您收取 读取整个分区 的费用,而不仅仅是 return 过滤后的特定行。如果您需要为读取整个分区付费,那么您不妨全部读取,无需过滤器,然后您可以实际计算行数并获取匹配项的数字索引(如果需要)。读取整个分区会导致您在客户端进行更多工作(以及更多网络流量),但不会增加您的 DynamoDB RCU 账单。