必须列出DynamoDB表中的所有记录,而不包含任何过滤器表达式。 我想限制记录的数量,因此使用DynamoDBScanExpression和setLimit。
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
....
// Set ExclusiveStartKey
....
scanExpression.setLimit(10);
然而,扫描操作总是返回10个以上结果!!!! 这是预期的行为,如果是这样的话?
答案 0 :(得分:0)
Python Answer
无法为limit
操作设置scan()
,但是可以通过query
进行设置。
query
通过items
搜索数据库中的行。它从列表的顶部或底部开始,并根据设置的条件查找项目。 您必须具有分区和排序键才能执行此操作。
另一方面,扫描通过整个数据库而不是按项目进行搜索,因此,不被排序。
由于查询是基于项目的,而扫描是基于 ENTIRE 数据库的,因此只有查询才能支持限制。
要回答OP的问题,本质上它是行不通的,因为您使用的是scan
而不是query
。
以下是使用CLIENT语法使用它的示例。(更高级的语法版本。很抱歉,我没有使用resource
的简单示例。 )
def retrieve_latest_item(self):
result = self.dynamodb_client.query(
TableName="cleaning_company_employees",
KeyConditionExpression= "works_night_shift = :value",
ExpressionAttributeValues={':value': {"BOOL":"True"}},
ScanIndexForward = False,
Limit = 3
)
return result