Node.js - MongoDB コレクションの作成

こんにちは、未来のプログラマーたち!今日は、Node.jsとMongoDBの世界に興味深く飛び込んでみましょう。あなたの近所の親切なコンピュータ教師として、MongoDBでコレクションを作成するプロセスをガイドします。プログラミングが初めての人でも心配しないでください。ステップバイステップで進め、すぐにプロのようにコレクションを作成できるようになります!

Node.js - MongoDB Create Collection

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();

以下のように分解します:

  1. createCollection メソッドを使用して「books」という新しいコレクションを作成します。
  2. コレクションが作成された場合、成功メッセージをログします。
  3. エラーが発生した場合、コレクションがすでに存在するか(エラーコード 48)を確認し、メッセージをログします。それ以外のエラーの場合はエラーデータをログします。
  4. 最後に、データベース接続を閉じます。

コレクションにオプションを追加

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();

このスクリプトは以下の概念をすべて組み合わせています:

  1. データベースに接続
  2. シンプルなコレクション(「books」)を作成
  3. オプション付きのコレクション(「logs」)を作成
  4. コレクションが存在するか確認してから作成(「authors」)

結論

おめでとうございます!MongoDBとNode.jsの世界に初めてのステップを踏み出しました。データベースに接続、コレクションの作成、オプションの追加、コレクションの存在確認について学びました。これらはMongoDBでのデータベース管理において非常に基本的なスキルです。

練習は完璧を生みます。さまざまな種類のコレクションを作成し、さまざまなオプションを試してみてください。間違えは学びの一部です!

引き続きコーディングを続け、学び続けてください。そして、最も重要なのは、楽しむことです!次回まで、データベース管理を楽しんでください!

以下に、今回使用した主要メソッドの表を示します:

メソッド 説明
MongoClient.connect() MongoDBサーバーに接続
db.createCollection() 新しいコレクションを作成
db.listCollections() 存在するコレクションをリスト

Credits: Image by storyset