Amazon dynamodb DynamoDB扫描计数与项目的实际计数不同

Amazon dynamodb DynamoDB扫描计数与项目的实际计数不同,amazon-dynamodb,Amazon Dynamodb,这是我浏览每页时显示的内容: 如您所见,数据库中的列表超过18000项 现在,当我这样做时: var params = { TableName : "theTable" }; db.scan(params, function(err, data) { if (err) { console.error(err); } else { console.log(data); } }); 它返回给我: 计数:16633,扫描计数:16633 为什么会这样?为什

这是我浏览每页时显示的内容:

如您所见,数据库中的列表超过18000项

现在,当我这样做时:

var params = {
  TableName : "theTable"
};

db.scan(params, function(err, data) {
  if (err) {
      console.error(err);
  } else {
      console.log(data);
  }
});
它返回给我:

计数:16633,扫描计数:16633


为什么会这样?为什么在我运行代码时不返回所有30000项?

当您的数据集大小超过1.0Mb时会发生这种情况。 DynamoDB返回所有最大大小为1.0Mb的项目,而不考虑您的
查询
扫描
。 来自AWS DynamoDB文档:

查询的结果集限制为每次调用1 MB。您可以使用查询响应中的LastEvaluatedKey来检索更多结果

每次调用的扫描结果集限制为1 MB。您可以使用扫描响应中的LastEvaluatedKey来检索更多结果

注意:在对检索到的数据集应用
FilterExpressions
之前,可以应用这些限制

要了解有关dynamoDB限制的更多信息,请按照文档进行操作


解决方案:如果查询或扫描结果超出限制,则数据集中还会返回一个
LastEvaluatedKey
属性,您可以使用它重新运行操作以检索下一组项目。

您可能超出了最大数据大小限制。DynamoDB只是停止并返回它在内存不足时能够扫描的内容。见: