必须列出 DynamoDB 表中的所有记录,无需任何过滤表达式。
我想限制记录数量,因此将 DynamoDBScanExpression 与 setLimit 结合使用。
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
....
// Set ExclusiveStartKey
....
scanExpression.setLimit(10);
然而,扫描操作总是返回超过 10 个结果!!!!
这是预期的行为吗?如果是,又是怎样的?
Python Answer
无法设置limit
for scan()
操作,但是,可以通过query
.
A query
搜索通过items
,数据库中的行。它从列表的顶部或底部开始,并根据设定的条件查找项目。您必须有一个分区和一个排序键才能执行此操作。
另一方面,扫描会搜索ENTIRE数据库而不是按项目,因此,NOT订购了。
由于查询是基于项目而扫描是基于ENTIRE数据库,只有查询可以支持限制。
要回答OP的问题,本质上它不起作用,因为你正在使用scan
not 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
这里是DynamoDB 模块文档 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)