DynamoDB 扫描会遗漏有效项目



在 DynamoDB 表中,我有一个具有以下方案的项目:

{
    id: 427,
    type: 'page',
    ...other_data
}

查询主索引 (id) 时,我按预期返回项目。

通过在 AWS DynamoDB Web 应用程序中执行scan操作来获取类型为 page 的所有项目,将返回 188 个项目,包括此缺失的项目。但是,使用 AWS 开发工具包在 Lambda 中执行此扫描操作时,仅返回 162 个项目。部分代码如下所示:

const params = { 
    TableName: <my-table-name>,
    FilterExpression: '#type = :type',
    ExpressionAttributeNames: { '#type': 'type' },
    ExpressionAttributeValues: { ':type': 'page' }
};
dynamodb.scan(params, (error, result) => {
    if (error) {
      console.log('error', error);
    } else {
      console.log(result.Items); // 162 items
    }
});

这里缺少什么?

结果数据集超过 1MB 的限制可能是这种情况:

如果扫描项目的总数超过最大数据集大小 限制为 1 MB,扫描停止并将结果返回给用户 一个 LastEvaluatedKey 值,用于在后续扫描中继续扫描 操作。结果还包括超过 限制。扫描可能导致没有表数据符合筛选条件。

检查LastEvaluatedKey字段的结果,并将其用于下一次扫描操作,并将其作为ExclusiveStartKey传递

最新更新