Node.js - MongoDB データベースの作成

こんにちは、将来のプログラマーたち!今日は、Node.jsとMongoDBの世界に楽しい冒険をすることになります。あなたの近所の親切なコンピュータサイエンスの先生として、これら強力なツールを使ってデータベースを作成するプロセスをガイドします。プログラミングが初めてであっても心配しないでください。基本から始めて、少しずつ進めていきます。コーヒー(またはお気に入りの飲み物)を一杯取り、一緒に飛び込んでみましょう!

Node.js - MongoDB Create Database

MongoDBとは?

データベースを作成する前に、MongoDBが何かを少し理解しましょう。巨大なデジタルの書類 cabinet があって、そこにさまざまな情報を保存できると imagine してみてください。MongoDBはまさにそれで、データを柔軟なJSON風の形式であるBSON(バイナリJSON)で保存するデータベースです。情報を素早く見つけて取り出すことができる超有能なアシスタントを持っているようなものです。

接続文字列:MongoDBへのゲートウェイ

MongoDBが何かを理解したので、次にどのように接続するか話しましょう。接続文字列は、Node.jsアプリケーションとMongoDBの間の秘密の握手のようなものです。接続を確立するために必要なすべての情報を含んでいます。MongoDBサーバーのアドレス、ポート番号、認証情報などです。

典型的なMongoDB接続文字列は以下のようになります:

mongodb://username:password@hostname:port/database

これを分解してみましょう:

  • mongodb://:プロトコルで、アプリケーションがMongoDBデータベースに接続していることを示します。
  • username:password:ログイン認証情報(必要な場合)。
  • hostname:MongoDBサーバーのアドレス(例えば、localhostは自分のマシン)。
  • port:MongoDBがリスニングしているポート番号(デフォルトは27017)。
  • database:接続したいデータベースの名前。

例:データベースの一覧

では、実際のコードで手を汚してみましょう!まずMongoDBに接続して、すべてのデータベースを一覧表示します。これは、接続が正常に動作しているか確認し、既存のデータベースを見るのに非常に役立ちます。

const MongoClient = require('mongodb').MongoClient;

// 接続URL
const url = 'mongodb://localhost:27017';

// データベース名
const dbName = 'myproject';

// 新しいMongoClientを作成
const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true });

// サーバーに接続
client.connect(function(err) {
if (err) {
console.error('MongoDBに接続できませんでした:', err);
return;
}

console.log("サーバーに正常に接続されました");

// adminデータベースを取得
const adminDb = client.db(dbName).admin();

// 利用可能なすべてのデータベースを一覧表示
adminDb.listDatabases(function(err, dbs) {
if (err) {
console.error('データベースの一覧を表示できませんでした:', err);
return;
}

console.log("データベース:");
dbs.databases.forEach(function(db) {
console.log(" - " + db.name);
});

client.close();
});
});

このコードを分解してみましょう:

  1. MongoDB用のドライバーをrequireします。
  2. 接続URLとデータベース名を設定します。
  3. 新しいMongoClientを作成し、いくつかのオプションを設定します。
  4. connectメソッドを使ってMongoDBに接続します。
  5. 接続が成功すると、adminデータベースを取得します。
  6. listDatabasesメソッドを使ってすべてのデータベースの一覧を取得します。
  7. データベース名を表示します。
  8. 最後に接続を閉じます。

このコードを実行すると、MongoDBインスタンス内のすべてのデータベースの一覧が表示されます。デジタルの書類 cabinet に「Hey、どのフォルダーを持っていますか?」と尋ねるようなものです。

新しいデータベースの作成

では、楽しい部分に進みましょう – 自分で新しいデータベースを作成することです!MongoDBでは、データを初めて保存するときにデータベースやコレクションが自動的に作成されます。魔法のようです – 事前に明示的に作成する必要はありません。

新しいデータベース「myNewDB」を作成し、コレクション「students」を追加してみましょう:

const MongoClient = require('mongodb').MongoClient;

// 接続URL
const url = 'mongodb://localhost:27017';

// データベース名
const dbName = 'myNewDB';

// 新しいMongoClientを作成
const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true });

// サーバーに接続
client.connect(function(err) {
if (err) {
console.error('MongoDBに接続できませんでした:', err);
return;
}

console.log("サーバーに正常に接続されました");

// データベースを取得
const db = client.db(dbName);

// 新しいコレクションを作成
db.createCollection("students", function(err, res) {
if (err) {
console.error('コレクションを作成できませんでした:', err);
return;
}

console.log("コレクションが作成されました!");

// ドキュメントを插入
db.collection('students').insertOne({
name: "John Doe",
age: 20,
grade: "A"
}, function(err, res) {
if (err) {
console.error('ドキュメントを插入できませんでした:', err);
return;
}

console.log("ドキュメントが插入されました");

// 接続を閉じる
client.close();
});
});
});

ここで起こっていることを分解してみましょう:

  1. 以前と同様にMongoDBに接続します。
  2. client.db(dbName)を使って新しいデータベースを取得します。存在しない場合は、MongoDBが自動的に作成します。
  3. db.createCollection()を使って新しいコレクション「students」を作成します。
  4. insertOne()を使って新しいドキュメントをコレクションに插入します。
  5. 最後に接続を閉じます。

このコードを実行すると、MongoDBは「myNewDB」データベースと「students」コレクションを作成し、John Doeの情報をドキュメントとして插入します。新しい書類 cabinet を作成し、フォルダー「students」を追加し、Johnのファイルをその中に挿入するようなものです。

結論

おめでとうございます!MongoDBに接続し、既存のデータベースを一覧表示し、新しいデータベースとコレクションを作成する方法を学びました。データベースの魔法使いへの道はまさにその道筋です!

実践が完璧を生むことを忘れないでください。さまざまなデータベース、コレクションを作成し、さまざまな種類のドキュメントを插入してみてください。データをクエリする練習も行ってみてください。MongoDBを操作する時間が増えるほど、より快適になります。

以下に、私たちが使用した主要なメソッドの表を示します:

メソッド 説明
MongoClient.connect() MongoDBに接続します
client.db() データベースの参照を取得します
adminDb.listDatabases() 利用可能なすべてのデータベースを一覧表示します
db.createCollection() 新しいコレクションを作成します
collection.insertOne() コレクションにドキュメントを插入します

快適なコーディングをし、データベースは常に整理され、クエリは雷速で実行されることを願っています!

Credits: Image by storyset