次の方法で共有


クイック スタート: Java 用 MongoDB ドライバーで Azure DocumentDB を使用する

このクイック スタートでは、Java を使用して基本的な Azure DocumentDB アプリケーションを作成します。 Azure DocumentDB は、アプリケーションがドキュメントをクラウドに格納し、公式の MongoDB ドライバーを使用してアクセスできるようにする NoSQL データ ストアです。 このガイドでは、Java を使用して Azure DocumentDB クラスターでドキュメントを作成し、基本的なタスクを実行する方法について説明します。

API リファレンス | ソース コード | パッケージ (Maven)

[前提条件]

  • Azure サブスクリプション

    • Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください
  • Java 21 以降

Azure DocumentDB クラスターを作成する

最初に、NoSQL データを格納および管理するための基盤として機能する Azure DocumentDB クラスターを作成する必要があります。

  1. Azure portal にサインインします (https://portal.azure.com)。

  2. Azure portal のメニューまたは [ホーム] ページで、 [リソースの作成] を選択します。

  3. [ 新規 ] ページで、 Azure DocumentDB を検索して選択します。

    Azure DocumentDB の検索を示すスクリーンショット。

  4. [Azure DocumentDB クラスターの作成] ページと [基本] セクションで、[クラスター層] セクションで [構成] オプションを選択します。

    クラスターの構成オプションを示すスクリーンショット。

  5. [ スケール ] ページで、これらのオプションを構成し、[ 保存] を選択して変更をクラスター層に保持します。

    価値
    クラスター レベル M30 tier, 2 vCore, 8-GiB RAM
    シャードあたりのストレージ 128 GiB

    新しい Azure DocumentDB クラスターのコンピューティングとストレージの構成オプションのスクリーンショット。

  6. [基本] セクションに戻り、次のオプションを構成します。

    価値
    Subscription Azure サブスクリプションを選択する
    リソース グループ 新しいリソース グループを作成するか、既存のリソース グループを選択
    クラスター名 グローバルに一意の名前を指定
    場所 サブスクリプションでサポートされている Azure リージョンを選択
    MongoDB バージョン 8.0 を選択
    管理者ユーザー名 ユーザー管理者としてクラスターにアクセスするためのユーザー名を作成する
    パスワード ユーザー名に関連付けられている一意のパスワードを使用する

    クラスター パラメーターを示すスクリーンショット。

    ヒント

    ユーザー名とパスワードに使用する値を記録します。 これらの値は、このガイドの後半で使用します。 有効な値の詳細については、 クラスターの制限事項を参照してください。

  7. [次へ: ネットワーク] を選択します。

  8. [ネットワーク] タブの [ ファイアウォール規則 ] セクションで、次のオプション 構成します。

    価値
    接続方法 Public access
    Azure 内の Azure サービスとリソースからこのクラスターへのパブリック アクセスを許可する 有効
  9. [+ 現在のクライアント IP アドレスの追加] を選択して、クラスターへのアクセスを許可する現在のクライアント デバイスのファイアウォール規則を追加します。

    ネットワーク構成を示すスクリーンショット。

    ヒント

    多くの企業環境では、VPN やその他の企業ネットワーク設定により、開発者用コンピューターの IP アドレスが非表示になっています。 このような場合は、 0.0.0.0 - 255.255.255.255 IP アドレス範囲をファイアウォール規則として追加することで、すべての IP アドレスへのアクセスを一時的に許可できます。 このファイアウォール規則は、接続テストと開発の一環として一時的にのみ使用してください。

  10. [Review + create](レビュー + 作成) を選択します。

  11. 指定した設定を確認し、[作成] を選択します。 クラスターの作成には数分かかります。 リソースのデプロイが完了するまで待ちます。

  12. 最後に、[ リソースに移動 ] を選択して、ポータルで Azure DocumentDB クラスターに移動します。

goto リソース オプションを示すスクリーンショット。

クラスターの資格情報を取得する

クラスターへの接続に使用する資格情報を取得します。

  1. クラスター ページで、リソース メニューの [接続文字列 ] オプションを選択します。

  2. [ 接続文字列 ] セクションで、[ 接続文字列 ] フィールドの値をコピーまたは記録します。

接続文字列オプションを示すスクリーンショット。

Important

ポータルの接続文字列には、パスワードの値は含まれません。 <password> プレースホルダーは、クラスターの作成時に入力した資格情報に置き換えるか、対話形式でパスワードを入力する必要があります。

プロジェクトを初期化する

現在のディレクトリに新しい Maven プロジェクトを作成します。

  1. 空のディレクトリから開始します。

  2. 現在のディレクトリでターミナルを開きます。

  3. クイック スタートアーキタイプを使用して、新しい Maven プロジェクトを作成します。

    mvn archetype:generate -DgroupId=com.example -DartifactId=azure-documentdb-java-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  4. 生成されたプロジェクト ディレクトリに移動します。

    cd azure-documentdb-java-quickstart
    
  5. プロジェクトをビルドして、プロジェクトが正常に作成されたことを確認します。

    mvn compile
    

クライアント ライブラリをインストールする

クライアント ライブラリは、maven を介して mongodb-driver-sync 成果物として使用できます。

  1. MongoDB Java ドライバーの依存関係を pom.xml ファイルに追加します。

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>5.2.0</version>
    </dependency>
    
  2. pom.xml ファイルを開いて確認し、依存関係エントリが存在することを検証します。

  3. 必要なパッケージをアプリケーション コードにインポートします。

    import com.mongodb.client.MongoClient;
    import com.mongodb.client.MongoClients;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    import com.mongodb.client.model.ReplaceOptions;
    import org.bson.Document;
    import org.bson.conversions.Bson;
    
    import java.util.Arrays;
    import java.util.List;
    

オブジェクト モデル

名前 Description
MongoClient MongoDB への接続に使用される型。
MongoDatabase クラスター内のデータベースを表します。
MongoCollection<Document> クラスター内のデータベース内のコレクションを表します。

コード例

このアプリケーションのコードは、 adventureworks という名前のデータベースと products という名前のコレクションに接続します。 products コレクションには、名前、カテゴリ、数量、一意の識別子、セールフラグなどの各製品の詳細が含まれています。 このコード サンプルでは、コレクションを操作するときに最も一般的な操作を実行します。

クライアントを認証する

まず、基本的な接続文字列を使用してクライアントに接続します。

  1. main メソッドを作成し、接続文字列を設定します。 <your-cluster-name><your-username>、および<your-password>を実際のクラスター情報に置き換えます。

    public class App {
        public static void main(String[] args) {
            // Connection string for Azure DocumentDB cluster
            String connectionString = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";
    
  2. MongoDB クライアントを作成し、接続を確認します。

            // Create a new client and connect to the server
            try (MongoClient mongoClient = MongoClients.create(connectionString)) {
    
                // Ping the server to verify connection
                MongoDatabase database = mongoClient.getDatabase("admin");
                database.runCommand(new Document("ping", 1));
    
                System.out.println("Successfully connected and pinged Azure DocumentDB");
    

コレクションを取得する

次に、データベースとコレクションを取得します。 データベースとコレクションがまだ存在しない場合は、ドライバーを使用して自動的に作成します。

  1. データベースへの参照を取得します。

                // Get database reference
                MongoDatabase adventureWorksDatabase = mongoClient.getDatabase("adventureworks");
                System.out.println("Connected to database: " + adventureWorksDatabase.getName());
    
  2. データベース内のコレクションへの参照を取得します。

                // Get collection reference
                MongoCollection<Document> productsCollection = adventureWorksDatabase.getCollection("products");
                System.out.println("Connected to collection: products");
    

ドキュメントの作成

次に、コレクション内に新しいドキュメントをいくつか作成します。 ドキュメントをアップサートし、同じ一意識別子を持つ既存のドキュメントがある場合、それを置き換えられるようにします。

  1. Document クラスを使用してサンプル製品ドキュメントを作成します。

                // Create sample products
                List<Document> products = Arrays.asList(
                    new Document("_id", "00000000-0000-0000-0000-000000004018")
                        .append("name", "Windry Mittens")
                        .append("category", "apparel-accessories-gloves-and-mittens")
                        .append("quantity", 121)
                        .append("price", 35.00)
                        .append("sale", false),
                    new Document("_id", "00000000-0000-0000-0000-000000004318")
                        .append("name", "Niborio Tent")
                        .append("category", "gear-camp-tents")
                        .append("quantity", 140)
                        .append("price", 420.00)
                        .append("sale", true)
                );
    
  2. upsert 操作を使用してドキュメントを挿入します。

                // Insert documents with upsert
                for (Document product : products) {
                    Bson filter = Filters.eq("_id", product.getString("_id"));
                    ReplaceOptions options = new ReplaceOptions().upsert(true);
    
                    productsCollection.replaceOne(filter, product, options);
                    System.out.println("Upserted product: " + product.getString("name"));
                }
    

ドキュメントを取得する

次に、ポイント読み取り操作を実行して、コレクションから特定のドキュメントを取得します。

  1. ID で特定のドキュメントを検索するフィルターを定義します。

                // Retrieve a specific document by ID
                Bson filter = Filters.eq("_id", "00000000-0000-0000-0000-000000004018");
    
  2. クエリを実行し、結果を取得します。

                Document retrievedProduct = productsCollection.find(filter).first();
    
                if (retrievedProduct != null) {
                    System.out.println("Retrieved product: " + retrievedProduct.getString("name") + 
                                     " - $" + retrievedProduct.getDouble("price"));
                } else {
                    System.out.println("Product not found");
                }
    

ドキュメントにクエリを実行する

最後に、MongoDB クエリ言語 (MQL) を使用して複数のドキュメントに対してクエリを実行します。

  1. 特定の条件に一致するドキュメントを検索するクエリを定義します。

                // Query for products on sale
                Bson saleFilter = Filters.eq("sale", true);
    
  2. カーソルをイテレーションして、一致するすべてのドキュメントを取得します。

                System.out.println("Products on sale:");
                for (Document product : productsCollection.find(saleFilter)) {
                    System.out.printf("- %s: $%.2f (Category: %s)%n",
                        product.getString("name"),
                        product.getDouble("price"),
                        product.getString("category"));
                }
    
            } catch (Exception e) {
                System.err.println("An error occurred: " + e.getMessage());
                e.printStackTrace();
            }
        }
    }
    

Visual Studio Code を使用してデータを探索する

Visual Studio Code の DocumentDB 拡張機能を使用して、データのクエリ、挿入、更新、削除などの主要なデータベース操作を実行します。

  1. Visual Studio Code を開きます。

  2. [拡張機能] ビューに移動し、DocumentDBという用語を検索します。 VS Code 用 DocumentDB 拡張機能を見つけます。

  3. 拡張機能の [インストール ] ボタンを選択します。 インストールが完了するまで待ちます。 プロンプトが表示されたら、Visual Studio Code をリロードします。

  4. アクティビティ バーで対応するアイコンを選択して 、DocumentDB 拡張機能に移動します。

  5. [DocumentDB 接続] ウィンドウで、[ + 新しい接続...] を選択します。

  6. ダイアログで、[ サービスの検出 ] を選択し、[ Azure DocumentDB - Azure Service Discovery] を選択します。

  7. Azure サブスクリプションと、新しく作成した Azure DocumentDB クラスターを選択します。

    ヒント

    多くの企業環境では、VPN やその他の企業ネットワーク設定により、開発者用コンピューターの IP アドレスが非表示になっています。 このような場合は、 0.0.0.0 - 255.255.255.255 IP アドレス範囲をファイアウォール規則として追加することで、すべての IP アドレスへのアクセスを一時的に許可できます。 このファイアウォール規則は、接続テストと開発の一環として一時的にのみ使用してください。 詳細については、「ファイアウォールの 構成」を参照してください。

  8. DocumentDB 接続ペインに戻り、クラスターのノードを展開し、既存のドキュメントノードとコレクションノードに移動します。

  9. コレクションのコンテキスト メニューを開き、[ DocumentDB スクラップブック] > [新しい DocumentDB スクラップブック] を選択します。

  10. 次の MongoDB クエリ言語 (MQL) コマンドを入力し、[ すべて実行] を選択します。 コマンドからの出力を確認します。

    db.products.find({
      price: { $gt: 200 },
      sale: true
    })
    .sort({ price: -1 })
    .limit(3)
    

リソースをクリーンアップする

Azure DocumentDB クラスターの使用が完了したら、作成した Azure リソースを削除して、追加の料金が発生しないようにすることができます。

  1. Azure portal の検索バーで、「リソース グループ」を検索して選択します。

    リソース グループを検索するためのオプションを示すスクリーンショット。

  2. 一覧で、このクイック スタートで使用したリソース グループを選択します。

    リソース グループを示すスクリーンショット。

  3. [リソース グループ] ページで、[リソース グループ 削除] を選択します。

  4. 削除の確認ダイアログで、リソース グループの名前を入力して、削除することを確認します。 最後に、[削除] を選択して、リソース グループを完全に削除します。

    リソース グループの削除の確認ボタンを示すスクリーンショット。