クイック スタート: Node.js で Azure Cosmos DB for MongoDB (RU) を使用する
このクイック スタートでは、Python を使用して基本的な Azure Cosmos DB for MongoDB アプリケーションをデプロイします。 Azure Cosmos DB for MongoDB はスキーマなしのデータ ストアであり、アプリケーションは MongoDB ライブラリを使用して非構造化ドキュメントをクラウドに格納できます。 Python を使用して、Azure Cosmos DB リソース内でドキュメントを作成し、基本的なタスクを実行する方法について説明します。
ライブラリのソース コード | パッケージ (npm) | Azure Developer CLI
前提条件
- Azure Developer CLI
- Docker Desktop
- Node.js 22 以降
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
プロジェクトを初期化する
Azure Developer CLI (azd
) を使用して、Azure Cosmos DB for Table アカウントを作成し、コンテナー化されたサンプル アプリケーションをデプロイします。 サンプル アプリケーションでは、クライアント ライブラリを使って、サンプル データの管理、作成、読み取り、クエリを実行します。
空のディレクトリでターミナルを開きます。
まだ認証されていない場合は、
azd auth login
を使用して Azure Developer CLI に対して認証します。 ツールによって指示された手順に従って、任意の Azure 資格情報を使って CLI に対して認証します。azd auth login
azd init
を使ってプロジェクトを初期化します。azd init --template cosmos-db-mongodb-nodejs-quickstart
初期化中に、一意の環境名を構成します。
azd up
を使って、Azure Cosmos DB アカウントをデプロイします。 Bicep テンプレートは、サンプル Web アプリケーションもデプロイします。azd up
このプロビジョニング プロセス中に、サブスクリプション、目的の場所、ターゲット リソース グループを選択します。 プロビジョニング プロセスが完了するまで待ちます。 このプロセスには 5 分ほどかかる可能性があります。
Azure リソースのプロビジョニングが完了すると、実行中の Web アプリケーションへの URL が出力に含まれます。
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
コンソールで URL を使って、ブラウザーで Web アプリケーションに移動します。 実行中のアプリの出力を確認します。
クライアント ライブラリをインストールする
クライアント ライブラリは、mongodb
パッケージとして npm 経由で使用できます。
ターミナルを開き、
/src/ts
フォルダーに移動します。cd ./src/ts
mongodb
パッケージがまだインストールされていない場合は、npm install
を使ってインストールします。npm install --save mongodb
src/ts/package.json ファイルを開いて確認し、
mongodb
エントリが存在することを確かめます。
ターミナルを開き、
/src/js
フォルダーに移動します。cd ./src/js
mongodb
パッケージがまだインストールされていない場合は、npm install
を使ってインストールします。npm install --save mongodb
src/js/package.json ファイルを開いて確認し、
mongodb
エントリが存在することを確かめます。
オブジェクト モデル
名前 | 説明 |
---|---|
MongoClient |
MongoDB への接続に使用される型。 |
Database |
アカウント内のデータベースを表します。 |
Collection |
アカウント内のデータベース内のコレクションを表します。 |
コード例
テンプレートのサンプル コードでは、cosmicworks
という名前のデータベースと products
という名前のコンテナーを使います。
products
コレクションには、名前、カテゴリ、数量、各製品の一意識別子などの詳細が含まれています。 コレクションでは、/category
プロパティをシャード キーとして使用します。
クライアントを認証する
このサンプルでは、MongoClient
型の新しいインスタンスを作成します。
const connectionString = "<azure-cosmos-db-for-mongodb-connection-string>";
const client = new MongoClient(connectionString);
const connectionString = "<azure-cosmos-db-for-mongodb-connection-string>";
const client = new MongoClient(connectionString);
データベースの取得
このサンプルでは、MongoClient
型の db
関数を使用して Db
型のインスタンスを作成します。
const database: Db = client.db("<database-name>");
const database = client.db("<database-name>");
コレクションの取得
このサンプルでは、Db
型の collection
関数を使用して Collection
型のインスタンスを作成します。
この関数には、インターフェイスで定義されている Product
型を使用するジェネリック パラメーターがあります。
const collection: Collection<Product> = database.collection<Product>("<collection-name>");
export interface Product {
_id: string;
category: string;
name: string;
quantity: number;
price: number;
clearance: boolean;
}
const collection = database.collection("<collection-name>");
ドキュメントの作成
collection.updateOne
を使用してコレクション内にドキュメントを作成します。 このメソッドは "アップサート" を行い、項目が既に存在する場合は、それを効果的に置き換えます。
var document: Product = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards',
name: 'Yamba Surfboard',
quantity: 12,
price: 850.00,
clearance: false
};
var query: Filter<Product> = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards'
};
var payload: UpdateFilter<Product> = {
$set: document
};
var options: UpdateOptions = {
upsert: true
};
var response: UpdateResult<Product> = await collection.updateOne(query, payload, options);
var document = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards',
name: 'Yamba Surfboard',
quantity: 12,
price: 850.00,
clearance: false
};
const query = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards'
};
const payload = {
$set: document
};
const options = {
upsert: true,
new: true
};
var response = await collection.updateOne(query, payload, options);
ドキュメントを読み取る
一意識別子 (id
) フィールドとシャード キー フィールドの両方を使って、ポイント読み取り操作を実行できます。
collection.findOne
を使って、特定の項目を効率的に取得できます。
var query: Filter<Product> = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards'
};
var response: WithId<Product> | null = await collection.findOne(query);
var query = {
_id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb',
category: 'gear-surf-surfboards'
};
var response = await collection.findOne(query);
ドキュメントにクエリを実行する
collection.find
を使って、コンテナー内の複数の項目に対してクエリを実行します。 このクエリは、指定されたカテゴリ (シャード キー) 内のすべての項目を検索します。
var query: Filter<Product> = {
category: 'gear-surf-surfboards'
};
var response: FindCursor<WithId<Product>> = await collection.find(query);
for await (const item of response) {
// Do something with each item
}
var query = {
category: 'gear-surf-surfboards'
};
var response = await collection.find(query);
for await (const item of response) {
// Do something with each item
}
データを調査する
Azure Cosmos DB 用の Visual Studio Code 拡張機能を使用して、MongoDB データを探索します。 次のようなコア データベース操作を実行できます。ただし、これらに限定されません:
- スクラップブックまたはクエリ エディターを使用したクエリの実行
- ドキュメントの変更、更新、作成、および削除
- 他のソースからの一括データのインポート
- データベースとコレクションの管理
詳細については、「Visual Studio Code 拡張機能を使用して Azure Cosmos DB for MongoDB データを探索する方法」を参照してください。
リソースをクリーンアップする
サンプル アプリケーションやリソースが不要になったら、対応するデプロイとすべてのリソースを削除します。
azd down