Node.js - MongoDB コレクションの作成
こんにちは、未来のプログラマーたち!今日は、Node.jsとMongoDBの世界に興味深く飛び込んでみましょう。あなたの近所の親切なコンピュータ教師として、MongoDBでコレクションを作成するプロセスをガイドします。プログラミングが初めての人でも心配しないでください。ステップバイステップで進め、すぐにプロのようにコレクションを作成できるようになります!
MongoDBとは?
本題に入る前に、基本的なことを説明しましょう。MongoDBは人気のNoSQLデータベースで、柔軟なJSON風のドキュメントにデータを保存します。巨大なデジタル書類 cabinet として考え、構造についてあまり気にせずにさまざまな情報を保存できます。
コレクションとは?
MongoDBでは、コレクションはその書類 cabinet のフォルダーに似ています。似たようなドキュメントをまとめる場所です。例えば、図書館のデータベースを作成する場合、図書、著者、借用者それぞれのコレクションを作成するかもしれません。
環境の設定
まず第一に、コンピュータにNode.jsとMongoDBがインストールされているか確認してください。まだインストールしていない場合は、公式ウェブサイトにアクセスしてインストールガイドに従ってください。
設定が完了したら、新しいプロジェクトフォルダーを作成して初期化します:
mkdir mongodb-collection-tutorial
cd mongodb-collection-tutorial
npm init -y
次に、Node.js用のMongoDBドライバーをインストールします:
npm install mongodb
MongoDBに接続
さあ、楽しい部分が始まります!新しいファイル app.js
を作成し、MongoDBデータベースに接続してみましょう:
const { MongoClient } = require('mongodb');
// 接続URL
const url = 'mongodb://localhost:27017';
// データベース名
const dbName = 'myLibrary';
// 新しいMongoClientを作成
const client = new MongoClient(url);
// サーバーに接続
async function connect() {
try {
await client.connect();
console.log('データベースに接続成功');
const db = client.db(dbName);
return db;
} catch (error) {
console.error('データベース接続エラー:', error);
}
}
このコードでは、ローカルのMongoDBサーバーに接続を設定しています。デフォルトのアドレス localhost:27017
を使用しています。データベース名も指定していますが、まだ存在しない場合はMongoDBが自動で作成してくれます。
コレクションの作成
接続が完了したら、初めてのコレクションを作成しましょう。図書館の「books」コレクションを作成します:
async function createCollection() {
const db = await connect();
try {
const result = await db.createCollection('books');
console.log('コレクション作成成功:', result.namespace);
} catch (error) {
if (error.code === 48) {
console.log('コレクションはすでに存在します');
} else {
console.error('コレクション作成エラー:', error);
}
} finally {
await client.close();
}
}
createCollection();
以下のように分解します:
-
createCollection
メソッドを使用して「books」という新しいコレクションを作成します。 - コレクションが作成された場合、成功メッセージをログします。
- エラーが発生した場合、コレクションがすでに存在するか(エラーコード 48)を確認し、メッセージをログします。それ以外のエラーの場合はエラーデータをログします。
- 最後に、データベース接続を閉じます。
コレクションにオプションを追加
MongoDBでは、コレクションを作成する際にオプションを指定できます。以下に、いくつかのオプションでコレクションを作成する例を示します:
async function createCollectionWithOptions() {
const db = await connect();
try {
const options = {
capped: true,
size: 1000000,
max: 5000
};
const result = await db.createCollection('logs', options);
console.log('オプション付きでコレクション作成成功:', result.namespace);
} catch (error) {
console.error('オプション付きでコレクション作成エラー:', error);
} finally {
await client.close();
}
}
createCollectionWithOptions();
この例では、「logs」コレクションを以下のオプションで作成しています:
-
capped: true
- 固定サイズのコレクション(キャップドコレクション)を作成します。 -
size: 1000000
- コレクションの最大サイズを1メガバイトに設定します。 -
max: 5000
- コレクションが保持できる最大ドキュメント数を5000に設定します。
これらのオプションは、ログファイルなどの「ローリング」的な性質を持つコレクションに便利です。
コレクションの存在を確認
コレクションを作成する前に存在を確認したい場合があります。以下にその方法を示します:
async function checkCollectionExists(collectionName) {
const db = await connect();
try {
const collections = await db.listCollections({name: collectionName}).toArray();
if (collections.length > 0) {
console.log(`${collectionName} コレクションは存在します`);
} else {
console.log(`${collectionName} コレクションは存在しません`);
}
} catch (error) {
console.error('コレクション確認エラー:', error);
} finally {
await client.close();
}
}
checkCollectionExists('books');
この関数は listCollections
メソッドを使用して、指定された名前のコレクションが存在するか確認します。返された配列の長さが0より大きい場合、コレクションが存在することを意味します。
すべてを合わせる
コレクションの作成について学んだので、すべてを一つのスクリプトにまとめてみましょう:
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017';
const dbName = 'myLibrary';
const client = new MongoClient(url);
async function connect() {
try {
await client.connect();
console.log('データベースに接続成功');
return client.db(dbName);
} catch (error) {
console.error('データベース接続エラー:', error);
}
}
async function createCollections() {
const db = await connect();
try {
// 'books' コレクションを作成
await db.createCollection('books');
console.log('Books コレクション作成成功');
// オプション付きで 'logs' コレクションを作成
const logOptions = { capped: true, size: 1000000, max: 5000 };
await db.createCollection('logs', logOptions);
console.log('Logs コレクション作成成功(オプション付き)');
// 'authors' コレクションが存在するか確認
const collections = await db.listCollections({name: 'authors'}).toArray();
if (collections.length > 0) {
console.log('Authors コレクションはすでに存在します');
} else {
await db.createCollection('authors');
console.log('Authors コレクション作成成功');
}
} catch (error) {
console.error('createCollections エラー:', error);
} finally {
await client.close();
}
}
createCollections();
このスクリプトは以下の概念をすべて組み合わせています:
- データベースに接続
- シンプルなコレクション(「books」)を作成
- オプション付きのコレクション(「logs」)を作成
- コレクションが存在するか確認してから作成(「authors」)
結論
おめでとうございます!MongoDBとNode.jsの世界に初めてのステップを踏み出しました。データベースに接続、コレクションの作成、オプションの追加、コレクションの存在確認について学びました。これらはMongoDBでのデータベース管理において非常に基本的なスキルです。
練習は完璧を生みます。さまざまな種類のコレクションを作成し、さまざまなオプションを試してみてください。間違えは学びの一部です!
引き続きコーディングを続け、学び続けてください。そして、最も重要なのは、楽しむことです!次回まで、データベース管理を楽しんでください!
以下に、今回使用した主要メソッドの表を示します:
メソッド | 説明 |
---|---|
MongoClient.connect() |
MongoDBサーバーに接続 |
db.createCollection() |
新しいコレクションを作成 |
db.listCollections() |
存在するコレクションをリスト |
Credits: Image by storyset