適用対象:
MongoDB
この記事では、ネイティブ MongoDB npm パッケージを使って Azure Cosmos DB for MongoDB に接続する方法について説明します。 接続すると、データベース、コレクション、ドキュメントに対する操作を実行できます。
Note
コード スニペットの例は、JavaScript プロジェクトとして GitHub で入手できます。
MongoDB 用 API リファレンス ドキュメント | MongoDB パッケージ (npm)
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Node.js LTS
- Azure コマンド ライン インターフェイス (CLI) または Azure PowerShell
- Azure Cosmos DB for MongoDB のリソース
新しい JavaScript アプリを作成する
任意のターミナルを使用して、空のフォルダーに新しい JavaScript アプリケーションを作成します。
npm initコマンドを使用して、package.jsonファイルを作成するためのプロンプトを開始します。 プロンプトの既定値をそのまま使用します。npm initMongoDB npm パッケージを JavaScript プロジェクトに追加します。 npm パッケージの名前を指定して
npm install packageコマンドを使用します。dotenvパッケージは、ローカルでの開発中に.envファイルから環境変数を読み取るために使用されます。npm install mongodb dotenvアプリを実行するには、ターミナルを使用してアプリケーション ディレクトリに移動し、アプリケーションを実行します。
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 オプション。 |
接続の問題については、トラブルシューティング ガイドに関する記事をご覧ください。
リソースの名前を取得する
resourceGroupName のシェル変数を作成します。
# Variable for resource group name resourceGroupName="msdocs-cosmos"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 )
接続文字列の取得
az cosmosdb keys listコマンドを使って、アカウントの接続文字列の一覧から MongoDB 用 API の接続文字列を見つけます。az cosmosdb keys list --type connection-strings \ --resource-group $resourceGroupName \ --name $accountName"主キー" の値を記録します。 これらの資格情報は後で使用します。
環境変数を構成する
コード内で接続文字列の値を使用するには、アプリケーションを実行しているローカル環境でこの値を設定します。 環境変数を設定するには、任意のターミナルを使用して次のコマンドを実行します。
$env:COSMOS_CONNECTION_STRING = "<cosmos-connection-string>"
接続文字列を使用して MongoClient を作成する
依存関係を追加して、MongoDB と DotEnv npm パッケージを参照します。
// Use official mongodb driver to connect to the server import { MongoClient } from 'mongodb';コンストラクターを使って
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 によって、アカウント、データベース、コレクション、ドキュメントで構成される階層内にリソースが作成されます。
上部に Azure Cosmos DB for MongoDB アカウントを示す階層図。 アカウントには 2 つの子データベース ノードがあります。 一方のデータベース ノードには、2 つの子コレクション ノードが含まれています。 もう一方のデータベース ノードには、1 つの子コレクション ノードが含まれています。 その 1 つのコレクション ノードには、3 つの子ドキュメント ノードがあります。
各種類のリソースは、1 つまたは複数の関連付けられた JavaScript クラスによって表されます。 以下に最も一般的なクラスの一覧を示します。
| クラス | 説明 |
|---|---|
MongoClient |
このクラスは、Azure Cosmos DB での MongoDB 用 API レイヤーに対するクライアント側の論理表現を提供します。 このクライアント オブジェクトは、サービスに対する要求の構成と実行に使用されます。 |
Db |
このクラスは、サービスにまだ存在する場合と存在しない場合があるデータベースへの参照です。 データベースへのアクセスまたはデータベースに対する操作の実行を試みると、データベースはサーバー側で検証されます。 |
Collection |
このクラスは、まだサービスに存在しない可能性があるコレクションへの参照です。 コレクションは、操作しようとすると、サーバー側で検証されます。 |
次のガイドでは、これらの各クラスを使ってアプリケーションをビルドする方法を示します。
ガイド:
関連項目
次のステップ
これで MongoDB 用 API アカウントに接続したので、次のガイドを使用してデータベースを作成し、管理してください。