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