DynamoDB テーブルのクエリおよびスキャン - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

DynamoDB テーブルのクエリおよびスキャン

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • 項目の DynamoDB テーブルをクエリおよびスキャンする方法。

シナリオ

クエリでは、プライマリキーの属性値のみを使用してテーブルまたはセカンダリインデックスの項目を検索します。パーティションキーの名前と検索対象の値を指定する必要があります。ソートキーの名前と値を指定し、比較演算子を使用して、検索結果をさらに絞り込むこともできます。スキャンは、指定したテーブルのすべての項目をチェックして項目を探します。

この例では、一連の Node.js モジュールを使用して、DynamoDB テーブルから取得する 1 つ以上の項目を識別します。このコードは SDK for JavaScript を使用して、DynamoDB クライアントクラスのこれらのメソッドでテーブルをクエリおよびスキャンします。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了します。

テーブルに対するクエリの実行

この例では、ビデオシリーズに関するエピソード情報を含むテーブルをクエリし、エピソード 9 の過去のサブタイトルに指定されたフレーズを含むセカンドシーズンのエピソードのタイトルとサブタイトルを返します。

ddb_query.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。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 モジュールを作成します。前に示したように SDK を必ず設定します。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にあります。