JavaScript を使用して Azure Cosmos DB for MongoDB の使用を開始する

適用対象: MongoDB

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

Note

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

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

前提条件

新しい 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 ネイティブ ドライバーを使用して Azure Cosmos DB for MongoDB に接続する

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

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

パラメーター 値の例 説明
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. az cosmosdb keys list コマンドを使って、アカウントの接続文字列の一覧から MongoDB 用 API の接続文字列を見つけます。

    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 パッケージを参照します。

    // Read .env file and set environment variables
    require('dotenv').config();
    
    // Use official mongodb driver to connect to the server
    const { MongoClient } = require('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 ドライバーのクイックスタートに関するページをご覧ください。

MongoClient 接続を閉じる

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

client.close()

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

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

Diagram of the Azure Cosmos DB DB hierarchy including accounts, databases, collections, and docs.

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

各種類のリソースは、1 つまたは複数の関連付けられた JavaScript クラスによって表されます。 以下に最も一般的なクラスの一覧を示します。

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

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

ガイド:

関連項目

次のステップ

これで MongoDB 用 API アカウントに接続したので、次のガイドを使用してデータベースを作成し、管理してください。