DynamoDB扫描遗漏了有效项

Kee*_*rop 3 amazon-web-services node.js amazon-dynamodb aws-lambda

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

{
    id: 427,
    type: 'page',
    ...other_data
}
Run Code Online (Sandbox Code Playgroud)

在查询主索引(id)时,我得到了按预期返回的项目。

通过scan在AWS DynamoDB Web应用程序内部执行的操作来获取所有类型为的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
    }
});
Run Code Online (Sandbox Code Playgroud)

这里缺少什么?

Dan*_*rin 6

结果数据集可能超过了1MB的限制:

如果扫描的项目总数超过1 MB的最大数据集大小限制,则扫描将停止,结果将作为LastEvaluatedKey值返回给用户,以继续进行后续操作。结果还包括超出限制的项目数。扫描可能导致没有表数据符合过滤条件。

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