Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

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

もう 1 つの一般的なアクセスパターンは、クエリ条件に基づき、テーブルから複数の項目を読み込むことです。

SQL

SQL SELECT ステートメントは、キー列、非キー列、または任意の組み合わせに対してクエリを実行できます。WHERE句は、次の例に示すように、返される行を決定します。

/* Return a single song, by primary key */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today';
/* Return all of the songs by an artist */ SELECT * FROM Music WHERE Artist='No One You Know';
/* Return all of the songs by an artist, matching first part of title */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
/* Return all of the songs by an artist, with a particular word in the title... ...but only if the price is less than 1.00 */ SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%' AND Price < 1.00;

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

DynamoDB

DynamoDB Query アクションにより、同様の方法でデータを取得できます。Queryアクションは、データが保存されている物理的な場所にすばやく効率的にアクセスすることができます。(詳しくは、パーティションとデータ分散 を参照してください)。

Query は、複合プライマリキー (パーティションキーとソートキー) のある任意のテーブルで使用できます。パーティションキーに対して等価条件を指定する必要があります。必要に応じて、ソートキーに対して別の条件を指定できます。

KeyConditionExpression パラメーターは、クエリを実行するキー値を指定します。オプションの FilterExpression を使用して、結果が返される前に、そこから特定の項目を削除できます。

DynamoDB では、式パラメータ (KeyConditionExpression および FilterExpression など) で ExpressionAttributeValues をプレースホルダーとして使用する必要があります。これは、実行時に、実際の値を SELECT ステートメントに置き換えるリレーショナルデータベースでの バインド変数の使用と似ています。

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

次に DynamoDB の Query 例を示します。

// Return a single song, by primary key { TableName: "Music", KeyConditionExpression: "Artist = :a and SongTitle = :t", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call Me Today" } }
// Return all of the songs by an artist { TableName: "Music", KeyConditionExpression: "Artist = :a", ExpressionAttributeValues: { ":a": "No One You Know" } }
// Return all of the songs by an artist, matching first part of title { TableName: "Music", KeyConditionExpression: "Artist = :a and begins_with(SongTitle, :t)", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Call" } }
// Return all of the songs by an artist, with a particular word in the title... // ...but only if the price is less than 1.00 { TableName: "Music", KeyConditionExpression: "Artist = :a and contains(SongTitle, :t)", FilterExpression: "price < :p", ExpressionAttributeValues: { ":a": "No One You Know", ":t": "Today", ":p": 1.00 } }

注記

Query を使用したコードの例については、「DynamoDB の使用開始」を参照してください。

このページの内容: