查询和扫描 DynamoDB 表 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon SDK for JavaScript v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

查询和扫描 DynamoDB 表

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何查询和扫描 DynamoDB 表的项目。

情景

仅使用主键属性值查找表或二级索引中的项目。您必须提供分区键名称和要搜索的值。您还可提供排序键名称和值,并使用比较运算符来优化搜索结果。扫描操作通过检查指定表中的每个项目来查找项目。

在本示例中,您使用一系列 Node.js 模块来标识要从 DynamoDB 表中检索的一个或多个项目。代码使用 SDK for JavaScript,通过 DynamoDB 客户端类的以下方法来查询和扫描表:

先决条件任务

要设置和运行此示例,请先完成以下任务:

查询表

此示例查询包含有关视频系列的剧集信息的表,返回第二季第九集之后,字幕中包含指定短语的每集的名称和字幕。

创建文件名为 ddb_query.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB,请创建一个 AWS.DynamoDB 服务对象。创建一个 JSON 对象,其中包含查询表所需的参数,在本示例中包括表名,查询所需的 ExpressionAttributeValues,使用这些值定义查询要返回的项目的 KeyConditionExpression,以及各个项目要返回的属性值的名称。调用 DynamoDB 服务对象的 query 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" }); var params = { ExpressionAttributeValues: { ":s": { N: "2" }, ":e": { N: "09" }, ":topic": { S: "PHRASE" }, }, KeyConditionExpression: "Season = :s and Episode > :e", ProjectionExpression: "Episode, Title, Subtitle", FilterExpression: "contains (Subtitle, :topic)", TableName: "EPISODES_TABLE", }; ddb.query(params, function (err, data) { if (err) { console.log("Error", err); } else { //console.log("Success", data.Items); data.Items.forEach(function (element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); } });

要运行示例,请在命令行中键入以下内容。

node ddb_query.js

此示例代码可在 GitHub 上的此处找到。

扫描表

创建文件名为 ddb_scan.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB,请创建一个 AWS.DynamoDB 服务对象。创建一个 JSON 对象,其中包含扫描表中项目所需的参数,在本示例中包括表的名称,各个匹配项目要返回的属性值的列表,以及用于筛选结果集来查找包含指定短语的项目的表达式。调用 DynamoDB 服务对象的 scan 方法。

// Load the AWS SDK for Node.js. var AWS = require("aws-sdk"); // Set the AWS Region. AWS.config.update({ region: "REGION" }); // Create DynamoDB service object. var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" }); const params = { // Specify which items in the results are returned. FilterExpression: "Subtitle = :topic AND Season = :s AND Episode = :e", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: "SubTitle2" }, ":s": { N: 1 }, ":e": { N: 2 }, }, // Set the projection expression, which are the attributes that you want. ProjectionExpression: "Season, Episode, Title, Subtitle", TableName: "EPISODES_TABLE", }; ddb.scan(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); data.Items.forEach(function (element, index, array) { console.log( "printing", element.Title.S + " (" + element.Subtitle.S + ")" ); }); } });

要运行示例,请在命令行中键入以下内容。

node ddb_scan.js

此示例代码可在 GitHub 上的此处找到。