Amazon dynamodb DynamoDBScanExpression with Limit返回的记录多于Limit

Amazon dynamodb DynamoDBScanExpression with Limit返回的记录多于Limit,amazon-dynamodb,Amazon Dynamodb,必须列出DynamoDB表中的所有记录,而不使用任何筛选表达式。 我想限制记录的数量,因此使用带有setLimit的DynamoDBScanExpression DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); .... // Set ExclusiveStartKey .... scanExpression.setLimit(10); 但是,扫描操作总是返回10个以上的结果!!!! 这是预期的行为吗?如

必须列出DynamoDB表中的所有记录,而不使用任何筛选表达式。 我想限制记录的数量,因此使用带有setLimit的DynamoDBScanExpression

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
....
// Set ExclusiveStartKey
....
scanExpression.setLimit(10);
但是,扫描操作总是返回10个以上的结果!!!!
这是预期的行为吗?如果是,如何进行?

Python回答

无法为
scan()
操作设置
限制
,但是,可以通过
查询
进行设置

一个
查询
搜索数据库中的
。它从列表的顶部或底部开始,并根据设置的条件查找项目您必须有一个partion和一个排序键才能执行此操作。

另一方面,扫描在整个数据库中搜索,而不是按项目搜索,结果是有序

由于查询基于项目,扫描基于整个数据库,因此只有查询可以支持限制

为了回答OP的问题,基本上它不起作用,因为您使用的是
scan
而不是
query

下面是一个如何使用客户端语法的示例。(更高级的语法版本。很抱歉,我没有一个更简单的使用
资源的示例。你可以用谷歌搜索。)

def检索最新项目(self):
结果=self.dynamodb_client.query(
TableName=“清洁公司员工”,
KeyConditionExpression=“工作时间\夜间\班次=:值”,
ExpressionAttributeValues={:值':{“BOOL”:“True”},
ScanIndexForward=False,
极限=3
)
返回结果

以下是

如何加载/获取结果?明白了,我正在使用mapper.scan返回分页列表,size()操作进行内部调用以获取所有记录。应该改为使用mapper.scanPage()!