python - 如何在 DynamoDB 中进行简单扫描?
问题描述
尝试理解文档与尝试理解如何在 AWS DynamoDB 中进行简单扫描相比非常困难。
有人可以简单地向我解释一下如何进行基本扫描吗?
解决方案
什么是扫描?
Scan 操作通过访问表或二级索引中的每个项目来返回一个或多个项目和项目属性。
解释
- 最简单形式的
scan
操作会查看表中的所有内容。大多数时候,您可能不需要返回甚至查看整个表格。因此,许多人经常决定使用过滤器来减少需要查看、处理和返回的内容。
如何扫描?
- 这是一个简单的扫描操作
python
。即使您不使用 python,本指南也会很有帮助。
# Table = 'grades'
# Year_levels = {0-12}
# Sort_key = overall_rank
# Attribute_categories = math, english, science | out of 100
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table("grades")
result = table.scan(
FilterExpression ='math > :math AND english > :eng',
ExpressionAttributeValues = {':math': 80,':eng': 70},
Select='SPECIFIC_ATTRIBUTES',
ProjectionExpression='year_level,overall_rank,math,english',
Limit = 50 #This is the amount of items to SCAN, not necessarily RETURN.
)
# return or print result
解释
FilterExpression and ExpressionAttributeValues
. 有多种方法可以理解这些是如何工作的。理解它的一种方法是将其视为项目attribute
value
检查器。换句话说,对于要返回的项目scan
,过滤器应用的每个项目都attributes
必须为真。例如(数学成绩 80%+,英语成绩 70%+)Select and Projection Expression
. 用技术术语来说,我解释这个的方式是不正确的,但是,实际上,这种理解方式是成立的:你可以看到有一个第二个过滤器,不是针对项目,而是针对项目的属性回来。例如(我只希望返回 year_level、overall_rank、math、english,但不希望返回科学)现在,如果我们将两者结合起来,我们就有了一个例子:如果一个项目被选中并且符合 放置在它上面的条件
FilterExpression
,它将被返回。但是,我们只想SPECIFIC_ATTRIBUTES
被退回。此时,将再次根据Select
标准检查该项目。选择标准告诉您要返回的项目的哪些属性。Limit
只是要检查的项目数量,但不一定返回。