JavaScript を使用して MongoDB 用 Azure Cosmos DB を始める方法

適用対象: Mongodb

Important

既存の MongoDB アプリケーションを移行するか、MongoDB クエリ言語 (MQL) 機能を使用しますか? Azure DocumentDB について考えてみましょう。

99.999% 可用性サービス レベル アグリーメント (SLA)、インスタント 自動スケール、および複数のリージョン間の自動フェールオーバーを使用した 大規模 なシナリオ向けのデータベース ソリューションをお探しですか? [c0]NoSQL 用に Azure Cosmos DB を検討してください。[c0]

この記事では、ネイティブ MongoDB npm パッケージを使用して MongoDB のAzure Cosmos DBに接続する方法について説明します。 接続すると、データベース、コレクション、ドキュメントに対する操作を実行できます。

コード スニペットの例は、JavaScript プロジェクトとして GitHub で入手できます。

MongoDB 用 API リファレンス ドキュメント | MongoDB パッケージ (npm)

Prerequisites

新しい JavaScript アプリを作成する

  1. 任意のターミナルを使用して、空のフォルダーに新しい JavaScript アプリケーションを作成します。 npm init コマンドを使用して、package.json ファイルを作成するためのプロンプトを開始します。 プロンプトの既定値をそのまま使用します。

    npm init
    
  2. MongoDB npm パッケージを JavaScript プロジェクトに追加します。 npm パッケージの名前を指定するには、 npm install package コマンドを使用します。 dotenv パッケージは、ローカルでの開発中に .env ファイルから環境変数を読み取るために使用されます。

    npm install mongodb dotenv
    
  3. アプリを実行するには、ターミナルを使用してアプリケーション ディレクトリに移動し、アプリケーションを実行します。

    node index.js
    

MongoDB ネイティブ ドライバーを使用して MongoDB のAzure Cosmos DBに接続する

MongoDB ネイティブ ドライバーと接続してAzure Cosmos DBするには、MongoClient クラスのインスタンスを作成します。 このクラスは、データベースに対するすべての操作を実行するための開始点です。

MongoClient の最も一般的なコンストラクターには、次の 2 つのパラメーターがあります。

パラメーター 値の例 Description
url COSMOS_CONNECTION_STRING 環境変数 すべてのリクエストに使用する MongoDB 接続文字列用 API
options {ssl: true, tls: true, } 接続の MongoDB オプション

接続の問題については、トラブルシューティング ガイドに関する記事をご覧ください。

リソースの名前を取得する

  1. resourceGroupName のシェル変数を作成します。

    # Variable for resource group name
    resourceGroupName="msdocs-cosmos"
    
  2. az cosmosdb list コマンドを使用して、リソース グループ内の最初の Azure Cosmos DB アカウントの名前を取得し、それを accountName シェル変数に格納します。

    # Retrieve most recently created account name
    accountName=$(
        az cosmosdb list \
            --resource-group $resourceGroupName \
            --query "[0].name" \
            --output tsv
    )
    

接続文字列の取得

  1. コマンドを使って、アカウントの接続文字列の一覧から MongoDB 用 API のaz cosmosdb keys listを見つけます。

    az cosmosdb keys list --type connection-strings \
        --resource-group $resourceGroupName \
        --name $accountName 
    
  2. "主キー" の値を記録します。 これらの資格情報を後で使用します。

環境変数を構成する

コード内で接続文字列の値を使用するには、アプリケーションを実行しているローカル環境でこの値を設定します。 環境変数を設定するには、任意のターミナルを使用して次のコマンドを実行します。

$env:COSMOS_CONNECTION_STRING = "<cosmos-connection-string>"

接続文字列を使用して MongoClient を作成する

  1. MongoDB と DotEnv npm パッケージを参照する依存関係を追加します。

    // Use official mongodb driver to connect to the server
    import { MongoClient } from 'mongodb';
    
  2. コンストラクターを使用して MongoClient クラスの新しいインスタンスを定義し、接続文字列を使用するprocess.env.を定義します。

    // New instance of MongoClient with connection string
    // for Cosmos DB
    const url = process.env.COSMOS_CONNECTION_STRING;
    const client = new MongoClient(url);
    
    // connect to the server
    await client.connect();
    
    // client options
    const options = client.options;
    console.log(
      `Options:\n${Object.keys(options).map(key => `\t${key}: ${options[key]}\n`)}`
    );
    

MongoClient インスタンスを作成するさまざまな方法の詳細については、「MongoDB NodeJS Driver Quick Start」を参照してください。

MongoClient 接続を閉じる

アプリケーションが接続を終了したら、必ず閉じてください。 .close()呼び出しは、すべてのデータベース呼び出しが行われた後である必要があります。

client.close()

MongoDB 用 API 向けの Azure Cosmos DB で MongoDB クライアント クラスを使う

アプリケーションのビルドを開始する前に、Azure Cosmos DB のリソースの階層について説明します。 Azure Cosmos DB には、リソースの作成とアクセスに使用される特定のオブジェクト モデルがあります。 Azure Cosmos DB によって、アカウント、データベース、コレクション、ドキュメントで構成される階層内にリソースが作成されます。

アカウント、データベース、コレクション、ドキュメントを含む Azure Cosmos DB for MongoDB 階層の図。

上部に Azure Cosmos DB for MongoDB アカウントを示す階層構造。 アカウントには 2 つの子データベース ノードがあります。 一方のデータベース ノードには、2 つの子コレクション ノードが含まれています。 もう一方のデータベース ノードには、1 つの子コレクション ノードが含まれています。 その 1 つの集約ノードには、3 つの子ドキュメント ノードがあります。

各種類のリソースは、1 つ以上の関連する JavaScript クラスによって表されます。 最も一般的なクラスの一覧を次に示します。

クラス Description
MongoClient このクラスは、Azure Cosmos DB での MongoDB 用 API レイヤーに対するクライアント側の論理表現を提供します。 このクライアント オブジェクトは、サービスに対する要求の構成と実行に使用されます。
Db このクラスは、サービスにまだ存在する場合と存在しない場合があるデータベースへの参照です。 データベースへのアクセスまたはデータベースに対する操作の実行を試みると、データベースはサーバー側で検証されます。
Collection このクラスは、まだサービスに存在しない可能性があるコレクションへの参照です。 コレクションは、操作しようとすると、サーバー側で検証されます。

次のガイドでは、これらの各クラスを使ってアプリケーションをビルドする方法を示します。

ガイド:

こちらも参照ください

次のステップ

MongoDB 用 API アカウントに接続したので、次のガイドを使用してデータベースを作成および管理します。

JavaScript