首页 > 解决方案 > 如何在 DynamoDB 中进行简单扫描?

问题描述

尝试理解文档与尝试理解如何在 AWS DynamoDB 中进行简单扫描相比非常困难。

有人可以简单地向我解释一下如何进行基本扫描吗?

标签: pythonamazon-web-servicesamazon-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只是要检查的项目数量,但不一定返回。

参考

参考


推荐阅读