DynamoDB扫描会保留有效的项目

时间:2017-10-25 07:16:42

标签: node.js amazon-web-services amazon-dynamodb aws-lambda

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

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

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

在AWS DynamoDB Web应用内部执行scan操作以获取类型为page的所有项目,将返回包含此缺失项目的188个项目。但是,使用AWS SDK在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
    }
});

这里缺少什么?

1 个答案:

答案 0 :(得分:4)

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

  

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

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

传递