DynamoDB-クエリテーブル

テーブルのクエリでは、主にテーブルを選択し、パーティションキーを指定して、クエリを実行する必要があります。セカンダリインデックスを使用し、スキャン操作を通じてより詳細なフィルタリングを実行するオプションがあります。

GUIコンソール、Java、または別のオプションを使用してタスクを実行します。

GUIコンソールを使用したテーブルのクエリ

以前に作成したテーブルを使用して、いくつかの簡単なクエリを実行します。まず、コンソールを開きます。https://console.aws.amazon.com/dynamodb

選択 Tables ナビゲーションペインから、 Replyテーブルリストから。次に、Items タブをクリックして、ロードされたデータを表示します。

下のデータフィルタリングリンク(「スキャン:[テーブル]返信」)を選択します Create Item ボタン。

フィルタリング画面で、操作のクエリを選択します。適切なパーティションキー値を入力し、をクリックしますStart

ザ・ Reply 次に、テーブルは一致するアイテムを返します。

Javaを使用したテーブルのクエリ

Javaのqueryメソッドを使用して、データ取得操作を実行します。オプションとしてソートキーを使用して、パーティションキー値を指定する必要があります。

最初に作成してJavaクエリをコーディングします querySpec objectパラメータの説明。次に、オブジェクトをクエリメソッドに渡します。前の例のパーティションキーを使用します。

次の例を確認できます-

import java.util.HashMap;
import java.util.Iterator;

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.ItemCollection;
import com.amazonaws.services.dynamodbv2.document.QueryOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;

public class ProductsQuery {  
   public static void main(String[] args) throws Exception {  
      AmazonDynamoDBClient client = new AmazonDynamoDBClient() 
         .withEndpoint("http://localhost:8000");  
      
      DynamoDB dynamoDB = new DynamoDB(client);  
      Table table = dynamoDB.getTable("Products");  
      HashMap<String, String> nameMap = new HashMap<String, String>(); 
      nameMap.put("#ID", "ID");  
      HashMap<String, Object> valueMap = new HashMap<String, Object>(); 
      valueMap.put(":xxx", 122);
      QuerySpec querySpec = new QuerySpec() 
         .withKeyConditionExpression("#ID = :xxx") 
         .withNameMap(new NameMap().with("#ID", "ID")) 
         .withValueMap(valueMap);  
      
      ItemCollection<QueryOutcome> items = null; 
      Iterator<Item> iterator = null; 
      Item item = null;  
      try { 
         System.out.println("Product with the ID 122"); 
         items = table.query(querySpec);  
         iterator = items.iterator(); 
         
         while (iterator.hasNext()) { 
            item = iterator.next(); 
            System.out.println(item.getNumber("ID") + ": " 
               + item.getString("Nomenclature")); 
         } 
      } catch (Exception e) { 
         System.err.println("Cannot find products with the ID number 122"); 
         System.err.println(e.getMessage()); 
      } 
   } 
}

クエリはパーティションキーを使用しますが、セカンダリインデックスはクエリに別のオプションを提供することに注意してください。それらの柔軟性により、非キー属性のクエリが可能になります。これについては、このチュートリアルの後半で説明します。

scanメソッドは、すべてのテーブルデータを収集することにより、取得操作もサポートします。ザ・optional .withFilterExpression 指定された基準外のアイテムが結果に表示されないようにします。

このチュートリアルの後半で、 scanning詳細に。ここで、次の例を見てください-

import java.util.Iterator;

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.ItemCollection;
import com.amazonaws.services.dynamodbv2.document.ScanOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.ScanSpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;

public class ProductsScan {  
   public static void main(String[] args) throws Exception {  
      AmazonDynamoDBClient client = new AmazonDynamoDBClient() 
         .withEndpoint("http://localhost:8000");  
      
      DynamoDB dynamoDB = new DynamoDB(client);  
      Table table = dynamoDB.getTable("Products");  
      ScanSpec scanSpec = new ScanSpec() 
         .withProjectionExpression("#ID, Nomenclature , stat.sales") 
         .withFilterExpression("#ID between :start_id and :end_id") 
         .withNameMap(new NameMap().with("#ID",  "ID")) 
         .withValueMap(new ValueMap().withNumber(":start_id", 120)
         .withNumber(":end_id", 129));  
      
      try { 
         ItemCollection<ScanOutcome> items = table.scan(scanSpec);  
         Iterator<Item> iter = items.iterator(); 
        
         while (iter.hasNext()) {
            Item item = iter.next(); 
            System.out.println(item.toString()); 
         } 
      } catch (Exception e) { 
         System.err.println("Cannot perform a table scan:"); 
         System.err.println(e.getMessage()); 
      } 
   } 
}