MongoDB 速習チュートリアル

Node.js によるデータベース操作

1. Node.js データベース操作の準備

本チュートリアルでは、MongoDB Atlas データベースを使用します。まだアカウントを持っていない方は、 https://www.mongodb.com/cloud/atlas  で無料アカウントを作成してください。

また、「アグリゲーション入門」セクションでロードしたサンプルデータセットの中の sample_mflix データベースを使用していきます。

2. MongoDB Node.js ドライバのインストール

Node.js プロジェクトで MongoDB を利用するには、まず mongodb パッケージをインストールする必要があります。

ターミナルで以下のコマンドを実行してインストールしてください。

npm install mongodb

インストールが完了したら、このパッケージを使ってデータベースへの接続ロジックを実装できます。
プロジェクトディレクトリに index.js ファイルを作成し、以下のコードを記述しましょう。

index.js

const { MongoClient } = require('mongodb');

3. コネクションストリングの取得

MongoDB Atlas データベースに接続するには、Atlas のダッシュボードからコネクションストリング(接続文字列)を取得する必要があります。

  1. Database 画面に移動し、対象の Cluster にある CONNECT ボタンをクリックします。
  2. Connect your application を選択し、表示されたコネクションストリングをコピーします。

例:

mongodb+srv://<username>:<password>@<cluster.string>.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

<username><password>、および <cluster.string> は、自身で設定した認証情報とクラスターの識別子に置き換える必要があります。

4. MongoDB への接続実装

それでは、index.js ファイルの内容を拡張して、実際の接続処理を記述してみましょう。

index.js

const { MongoClient } = require('mongodb');

// あなたのコネクションストリングに置き換えてください
const uri = "<Your Connection String>";
const client = new MongoClient(uri);

async function run() {
  try {
    // データベースに接続
    await client.connect();
    
    // データベースとコレクションを指定
    const db = client.db('sample_mflix');
    const collection = db.collection('movies');

    // コレクション内の最初のドキュメントを検索
    const first = await collection.findOne();
    console.log(first);
  } finally {
    // 処理完了後、またはエラー発生時にデータベース接続をクローズする
    await client.close();
  }
}

run().catch(console.error);

このファイルをターミナルで実行します。

node index.js

コンソールに最初のドキュメントが出力されれば、接続成功です!

5. CRUD とドキュメントアグリゲーション

これまで mongosh で行ってきた操作と同様に、Node.js の言語ドライバを使用して、データベース内のドキュメントに対して作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)、そしてアグリゲーション(集計)を実行できます。

先ほどのサンプルコードの collection.findOne() の部分を、以下のメソッドに書き換えることで、様々な操作が可能です。

  • find()
  • insertOne()
  • insertMany()
  • updateOne()
  • updateMany()
  • deleteOne()
  • deleteMany()
  • aggregate()

実際にいくつかのメソッドを試して、Node.js からの柔軟なデータ操作を体感してみてください。フルスタックエンジニアとして、これらの非同期操作をマスターすることは非常に強力な武器になります。