【初心者向け】MongoDB Atlasの導入から使い方まで


【初心者向け】MongoDB Atlasの導入から使い方まで:クラウドデータベース完全ガイド

はじめに

データベースは、現代の多くのアプリケーションやサービスにとって不可欠な要素です。特に、柔軟なデータ構造と高いスケーラビリティが求められるWebサービスやモバイルアプリケーションの開発では、NoSQLデータベースがよく利用されます。その中でも、ドキュメント指向データベースの代表格であるMongoDBは、世界中の開発者に広く支持されています。

しかし、「データベースの構築や運用って難しそう…」「サーバーの準備や設定、バックアップ、監視など、自分で全部やるのは大変…」と感じる方もいるかもしれません。

そこで登場するのが、「MongoDB Atlas」です。

MongoDB Atlasは、MongoDB Inc. が公式に提供するフルマネージドなクラウドデータベースサービスです。これにより、ユーザーはデータベースの運用・管理の手間から解放され、アプリケーション開発に集中できます。サーバーのプロビジョニング、設定、パッチ適用、バックアップ、監視、スケーリングといった面倒な作業は、すべてAtlasが自動で行ってくれます。

この記事は、MongoDBやクラウドデータベースを使ったことがない初心者の方を対象に、MongoDB Atlasの導入から基本的な使い方までを、約5000語のボリュームで詳細に解説します。

この記事を読めば、以下のことができるようになります。

  • MongoDB Atlasがどのようなサービスか理解できる
  • Atlasのアカウントを作成し、Free Tier(無料枠)のクラスターを構築できる
  • 作成したクラスターに、様々な方法(Shell、Compass、アプリケーション)で接続できる
  • 基本的なCRUD(作成、読み込み、更新、削除)操作を実行できる
  • Atlasの基本的な機能や運用上の注意点を理解できる

さあ、MongoDB Atlasの世界に飛び込みましょう!

1. MongoDB Atlasとは?

MongoDB Atlasについて掘り下げる前に、まずはMongoDBそのものについて簡単に振り返りましょう。

1.1 MongoDBのおさらい

MongoDBは、オープンソースのドキュメント指向データベースです。リレーショナルデータベース(RDB)のように行と列でデータを管理するのではなく、「ドキュメント」という単位でデータを管理します。このドキュメントはJSONライクなBSON形式で記述され、柔軟なスキーマを持つことができます。つまり、事前に厳密なテーブル構造を定義する必要がなく、必要に応じてドキュメントのフィールドを追加したり削除したりできます。

MongoDBの主な特徴は以下の通りです。

  • ドキュメント指向: データをJSONライクなドキュメント形式で保存します。
  • 柔軟なスキーマ: スキーマ定義は必須ではなく、必要に応じて構造を変更できます。
  • 高いスケーラビリティ: シャーディングという仕組みにより、大量のデータや高いトラフィックに対応できます。
  • 豊富なクエリ機能: RDBのような強力なクエリ機能に加え、複雑なデータ集計(Aggregation Framework)や地理空間検索などに対応しています。
  • 高速なパフォーマンス: インメモリでのデータ処理や適切なインデックスにより高速な読み書きが可能です。

MongoDBは、その柔軟性とスケーラビリティから、Webアプリケーション、モバイルアプリケーション、ゲーム、IoT、リアルタイム分析など、様々な分野で利用されています。

1.2 Atlasの位置づけ

MongoDB Atlasは、MongoDB Inc. が提供する「MongoDBの公式クラウドサービス」です。これまでは、自分でサーバーを用意し、そこにMongoDBをインストールし、設定、運用、監視、バックアップなどをすべて自分で行う必要がありました。これには専門的な知識と手間がかかります。

Atlasは、これらの面倒な作業をすべて引き受けてくれます。AWS、Google Cloud (GCP)、Microsoft Azureといった主要なクラウドプロバイダー上で、最適化されたMongoDB環境を提供し、その管理・運用を代行してくれます。つまり、ユーザーはデータベースの「利用」だけに集中できるようになります。

1.3 マネージドサービスであることの利点

Atlasのような「フルマネージドサービス」を利用する最大の利点は、運用負荷が大幅に軽減されることです。具体的には、以下のようなメリットがあります。

  • 簡単なセットアップ: 数クリックでMongoDBクラスターをデプロイできます。
  • 運用の自動化: ハードウェアのプロビジョニング、OSやMongoDBのインストール・設定、パッチ適用などが自動で行われます。
  • 自動バックアップ: 定期的なバックアップが自動で行われ、データの消失リスクを低減できます。ポイントインタイムリカバリ(PITR)も可能です(特定のティア以上)。
  • 監視とアラート: クラスターのパフォーマンスや稼働状況を監視し、問題が発生した際に通知を受け取ることができます。
  • 高い可用性: レプリカセット構成により、サーバー障害発生時にも自動的にフェイルオーバーし、サービス停止時間を最小限に抑えます。
  • 容易なスケーリング: アプリケーションの負荷に応じて、ストレージ容量やコンピューティングリソースを簡単に増減できます。オートスケーリング機能もあります。
  • セキュリティ: ネットワークアクセス制御、認証、暗号化など、様々なセキュリティ機能が提供されます。
  • 様々な機能の統合: BI Connector、Atlas Search、Atlas Data Lake、Graphsなど、MongoDBの関連機能や最新機能が統合されています。

これらの利点により、開発者はインフラ管理に時間を費やすことなく、アプリケーションのビジネスロジック開発に集中できます。

1.4 利用可能なクラウドプロバイダーとリージョン

MongoDB Atlasは、以下の主要なクラウドプロバイダー上で利用可能です。

  • Amazon Web Services (AWS)
  • Google Cloud (GCP)
  • Microsoft Azure

ユーザーは、アプリケーションのデプロイ先や既存のインフラに合わせて、最適なクラウドプロバイダーを選択できます。また、各プロバイダーの複数のリージョン(物理的なデータセンターの場所)を選択できるため、ユーザーやアプリケーションサーバーに近いリージョンを選択することで、レイテンシ(通信遅延)を最小限に抑えることができます。

1.5 料金体系

MongoDB Atlasは、様々なニーズに対応できるよう、柔軟な料金体系を提供しています。

  • Free Tier (M0): 無料で利用できるティアです。学習、開発、小規模なアプリケーションのテストに適しています。ただし、ストレージ容量やコンピューティングリソース、接続数などに制限があります。本番環境での利用は推奨されません。
  • Shared Clusters (M2, M5): 複数のユーザーがリソースを共有するティアです。Free Tierよりも多くのリソースを利用でき、開発やステージング環境、比較的小規模な本番環境に適しています。Free Tierよりは高機能ですが、Dedicated Clustersに比べるとリソースの保証レベルは低くなります。
  • Dedicated Clusters (M10以上): ユーザー専用のリソースが確保されるティアです。高いパフォーマンス、信頼性、スケーラビリティが保証され、ミッションクリティカルな本番環境に適しています。CPU、メモリ、ストレージ容量、ネットワーク性能などを細かく選択できます。
  • Serverless: 使用したリソース(読み書き操作、ストレージ容量)に応じて料金が発生するティアです。予測不能なワークロードや、利用量が大きく変動するアプリケーションに適しています。サーバーの管理は不要で、リソースのスケーリングは自動で行われます。

この記事では、まず無料で始められるFree Tier (M0) を利用して、Atlasの基本的な使い方を学びます。

このセクションのまとめ: MongoDB Atlasは、MongoDBをクラウド上で簡単に利用できるフルマネージドサービスです。サーバー管理の手間を省き、開発に集中できるのが最大のメリットです。AWS, GCP, Azureに対応しており、無料枠からエンタープライズ向けまで様々なティアが用意されています。

2. MongoDB Atlas Free Tierの導入

MongoDB Atlasを使い始める最初のステップは、アカウントの作成とFree Tierクラスターの構築です。Free Tierは無料でAtlasを試すことができるため、学習や開発の初期段階に最適です。

2.1 Free Tierの概要

Free Tier (M0クラスター) は、以下のリソースを提供します。

  • ストレージ: 512MB
  • メモリ: 共有
  • コンピューティング: 共有vCPU
  • リージョン: 一部の限られたリージョンのみ選択可能
  • 可用性: 3ノードレプリカセット(ただし、アイドル時に停止する場合あり)
  • バックアップ: 自動クラウドプロバイダー スナップショット(日次)
  • サポート: コミュニティサポートのみ

これらの制限があるため、M0クラスターは本格的な本番環境には適しません。あくまで学習・開発・評価目的で使用してください。特に、ストレージ容量の512MBはすぐに使い切ってしまう可能性がある点に注意が必要です。

2.2 アカウント作成手順

それでは、実際にAtlasのアカウントを作成しましょう。

  1. Atlasウェブサイトへのアクセス:
    Webブラウザで以下のMongoDB Atlasのサインアップページにアクセスします。
    https://www.mongodb.com/cloud/atlas/register

  2. サインアップ方法の選択:
    メールアドレスとパスワードを入力して登録するか、GoogleアカウントまたはGitHubアカウント連携で登録するかを選択できます。今回はメールアドレスで登録する例で進めますが、お好みの方法を選択してください。

    • Full Name (氏名)
    • Email (メールアドレス)
    • Password (パスワード)
    • Country (国)
    • ‘I agree to the Terms of Service…’ にチェックを入れる。
    • reCAPTCHAの認証を行う。
  3. 「Get started free」ボタンをクリック:
    入力が終わったら、「Get started free」ボタンをクリックします。

  4. 簡単な質問への回答 (スキップ可能):
    いくつかの簡単な質問が表示されます。「What is your role?」「What is your primary goal?」「What type of application are you building?」「Which cloud provider(s) do you plan to use?」などです。これはMongoDB側がユーザーの利用状況を把握するためのものなので、正直に回答しても、あるいは画面下部にある「Skip for now」をクリックしてスキップしても構いません。

  5. Atlas Home画面への遷移:
    質問に回答するかスキップすると、MongoDB AtlasのHome画面が表示されます。これがAtlasの管理画面です。

2.3 組織 (Organization) とプロジェクト (Project)

Atlasには、「Organization (組織)」と「Project (プロジェクト)」という階層構造があります。

  • Organization: 組織全体を管理する最上位の単位です。複数のプロジェクトを含むことができ、組織レベルで請求情報やメンバー管理などを行います。通常、会社やチームごとに1つの組織を作成します。
  • Project: 特定のアプリケーションやサービスに関連するリソース(クラスター、データベースユーザー、ネットワーク設定など)をまとめる単位です。プロジェクトごとにアクセス権限や設定を管理します。

初めてAtlasに登録した場合、通常はデフォルトのOrganizationと、その中に自動的に作成されたデフォルトのProjectが一つあります。特にこだわりがなければ、このデフォルトのProjectを使ってFree Tierクラスターを作成して問題ありません。将来的に複数のアプリケーションを開発する場合や、チームでAtlasを利用する場合は、新しいOrganizationやProjectを作成して整理すると良いでしょう。

これで、MongoDB Atlasを使い始めるためのアカウント作成が完了しました。次は、実際にデータベースクラスターを作成します。

このセクションのまとめ: Free Tierは無料でAtlasを試せるが、リソースに制限があるため本番利用は非推奨です。アカウント作成は簡単で、メールアドレスまたはSNS連携で行えます。Atlasは組織とプロジェクトという階層でリソースを管理します。

3. クラスターの作成 (Free Tier)

アカウント作成が完了したら、いよいよデータベースクラスターを作成します。クラスターとは、MongoDBのサーバー群のことです。Atlasでは、このクラスターの作成・設定を管理画面から簡単に行えます。

  1. Home画面からクラスター作成を開始:
    AtlasのHome画面(Overviewタブ)にアクセスします。画面中央に大きく表示されている「Create a Database」ボタンをクリックします。

  2. クラスタータイプの選択:
    データベースをデプロイする方法を選択します。ここでは、「M0 Free」ティアを利用するので、画面左側の「Free」オプションを選択します。このオプションを選択すると、Free Tierで利用可能な構成が自動的に選択されます。

  3. クラウドプロバイダーとリージョンの選択:
    Free Tierで利用できるクラウドプロバイダー(AWS, GCP, Azure)とリージョンが表示されます。ドロップダウンリストから選択します。

    • クラウドプロバイダー: 特に希望がなければ、いずれを選択しても構いません。
    • リージョン: アプリケーションサーバーや、ご自身の開発環境に地理的に最も近いリージョンを選択するのが理想的です。これにより、データベースへのアクセスレイテンシが小さくなります。Free Tierでは選択できるリージョンが限られていますので、リストから選択可能なものを選びます。

    選択すると、画面右側に選択した構成の概要が表示されます。

  4. クラスターティアの確認:
    「Cluster Tier」の項目が「M0 Sandbox」となっていることを確認します。これはFree Tierであることを示しています。ストレージサイズが512MBであることも確認できます。

  5. 追加設定 (オプション):

    • Backup: Free Tierでは自動クラウドプロバイダー スナップショット(日次)がデフォルトで有効になっており、変更できません。
    • Additional Settings: 特に変更する必要はありません。デフォルトのまま進みます。
  6. クラスター名の設定:
    画面下部に「Cluster Name」を入力するフィールドがあります。デフォルトではCluster0のような名前がついていますが、任意の分かりやすい名前に変更できます(例: my-atlas-free-cluster, dev-cluster)。この名前は後で接続する際に必要になるわけではありませんが、管理画面上で複数のクラスターを区別するために重要です。

  7. クラスター作成の開始:
    全ての項目を確認したら、画面右下にある「Create Cluster」ボタンをクリックします。

  8. プロビジョニングの待ち時間:
    クラスターの作成が開始されます。Atlasが選択したクラウドプロバイダー上に仮想マシンを準備し、MongoDBをインストール・設定し、レプリカセットを構成するまで、数分から十数分程度かかります。この間、Home画面にはクラスターが「creating」または「provisioning」状態であることが表示されます。
    この間に、次のステップである「データベースユーザーの作成」と「ネットワークアクセスの設定」を行うように促されます。クラスターが利用可能になる前にこれらの設定を済ませておくと、待ち時間を有効に使えます。

このセクションのまとめ: Atlas管理画面から数ステップでクラスターを作成できます。Free Tier (M0) を選択し、クラウドプロバイダーとリージョンを選び、クラスター名を決めるだけです。クラスター作成には数分かかります。

4. クラスターへの接続設定

クラスターの作成が完了したら、アプリケーションやツールからデータベースに接続するための設定を行います。これはセキュリティ上非常に重要なステップです。Atlasへの接続を許可するIPアドレスと、データベースにアクセスするためのユーザーを作成します。

クラスターの作成が完了すると、Home画面のクラスター表示が「Running」状態になります。クラスター名の右側に表示される「Connect」ボタンをクリックします。

「Connect to <クラスター名>」というウィンドウが表示されます。ここで、以下の2つの重要な設定を行います。

  1. IPアドレスのホワイトリスト登録 (Network Access)
    これは、どのネットワークからAtlasクラスターへの接続を許可するかを設定するものです。セキュリティのため、デフォルトではどのIPアドレスからも接続できません。接続元となるグローバルIPアドレス(ご自身の開発環境やアプリケーションサーバーのIPアドレス)を登録する必要があります。

    • 「Add a Connection IP Address」セクションで、以下のいずれかを選択します。

      • Add Your Current IP Address: 今Atlas管理画面にアクセスしている場所(通常はご自身のPC)のグローバルIPアドレスを自動的に取得して登録します。開発中にご自身のPCから接続する場合に便利です。ただし、IPアドレスが変更される可能性のある環境(例: スマートフォンやテザリング、一部の自宅回線)では、後で再設定が必要になることがあります。
      • Allow Access from Anywhere: 世界中のどのIPアドレスからも接続を許可します(IPアドレス 0.0.0.0/0 を登録)。開発やテスト目的以外では絶対に推奨されません。 本番環境では、アプリケーションサーバーなど、必要なIPアドレスのみを登録するようにしましょう。
      • Add a Different IP Address: 特定のIPアドレスまたはCIDR形式のIPアドレス範囲を手動で入力して登録します。アプリケーションサーバーの固定IPアドレスや、会社内の特定のネットワークからのアクセスを許可する場合に利用します。
    • 今回は、ご自身のPCから接続することを想定し、「Add Your Current IP Address」を選択するのが最も簡単です。

    • IPアドレスが入力フィールドに追加されたら、必要に応じてDescription(説明)を入力し、「Add IP Address」ボタンをクリックします。
    • 設定の反映には数分かかることがあります。
  2. データベースユーザーの作成 (Database Access)
    これは、MongoDBに接続する際に認証を行うためのユーザー名とパスワードを作成するものです。データベースの操作(読み書き、コレクション作成など)は、このユーザーアカウントを通じて行われます。

    • 「Create a Database User」セクションで、以下の項目を入力します。

      • Username: 任意のユーザー名を入力します。アプリケーション名や役割を示す名前が良いでしょう(例: myAppUser, devAdmin)。
      • Authentication Method: 「Password」を選択します。
      • Password: 強力なパスワードを設定します。推測されにくい、複雑なパスワードを設定しましょう。
      • Autogenerate Secure Password: ボタンをクリックすると、Atlasがランダムな強力なパスワードを生成してくれます。生成されたパスワードは必ずどこかに安全にメモしておきましょう。
      • Database User Privileges: このユーザーに与える権限を選択します。

        • Read and write to any database: 任意のデータベースに対して読み書きが可能です。(初心者向け)
        • Only read on any database: 任意のデータベースに対して読み込みのみ可能です。
        • Only read and write on specific databases: 特定のデータベースとコレクションに対してのみ読み書き可能です。(本番推奨)
        • Only read on specific databases: 特定のデータベースとコレクションに対してのみ読み込み可能です。
        • Atlas Admin: Atlas管理画面での操作を含む、ほぼ全ての権限を持ちます。(非常に強力なので注意)
      • 今回は、学習・開発目的で、最も簡単な「Read and write to any database」を選択するのが良いでしょう。または、「Atlas Admin」を選択すると、データ操作だけでなく、後述のData Explorerなどの機能も使いやすくなります。

        • 入力が終わったら、「Create Database User」ボタンをクリックします。
        • ユーザー作成も数分かかることがあります。

IPアドレスとデータベースユーザーの設定が完了すると、Connectウィンドウの下部に「Choose a connection method」というセクションが表示されます。ここで、Atlasクラスターに接続するための具体的な方法を選択できます。

接続方法は主に以下の3種類があります。

  • Connect with the MongoDB Shell: コマンドラインツール (mongosh) を使って接続する場合。
  • Connect with MongoDB Compass: MongoDB公式のGUIツール (Compass) を使って接続する場合。
  • Connect your Application: プログラミング言語のドライバーを使ってアプリケーションから接続する場合。

次のセクションでは、それぞれの接続方法について詳しく見ていきます。

このセクションのまとめ: Atlasクラスターへの接続には、IPアドレスの許可 (Network Access) とデータベースユーザーの作成 (Database Access) の両方が必要です。セキュリティのため、IPアドレスは必要なものだけに限定し、強力なパスワードを設定しましょう。接続方法は、Shell、Compass、アプリケーションの3種類があります。

5. MongoDB Shellからの接続と操作

MongoDB Shell (mongosh) は、コマンドラインからMongoDBを操作するためのツールです。サーバーの管理やスクリプト実行、簡単なデータ操作などに便利です。

5.1 mongoshのインストール

まず、ご自身の環境にmongoshをインストールする必要があります。MongoDBの公式サイトからOSに合ったインストーラーをダウンロードしてください。

  • MongoDB Shellのインストールガイド: https://www.mongodb.com/docs/mongodb-shell/install/

インストール後、ターミナル(macOS/Linux)またはコマンドプロンプト/PowerShell(Windows)でmongosh --versionと入力し、バージョン情報が表示されればインストール成功です。

5.2 Atlasからの接続文字列取得

Atlas管理画面に戻り、Connectウィンドウを開き、「Connect with the MongoDB Shell」を選択します。

  • 「I have the MongoDB Shell installed.」にチェックを入れます。
  • Atlasが接続文字列を生成して表示してくれます。これは通常、以下のような形式になっています。
    mongosh "mongodb+srv://<username>:<password>@<cluster-url>/<database-name>?retryWrites=true&w=majority"

  • この接続文字列をコピーします。<username>の部分は、先ほど作成したデータベースユーザー名に置き換える必要があります。<password>の部分は、作成したユーザーのパスワードに置き換える必要があります。

重要: セキュリティのため、通常はこの接続文字列の<password>部分をそのままにしておき、実際にmongoshコマンドを実行した際にパスワードを手入力します。

5.3 mongoshでの接続

ターミナルを開き、コピーした接続文字列を貼り付けてEnterキーを押します。

bash
mongosh "mongodb+srv://[email protected]/?retryWrites=true&w=majority"

(例: ユーザー名がdevAdmin、クラスターURLがmy-atlas-free-cluster.abcde.mongodb.netの場合)

パスワードの入力が求められるので、先ほど作成したユーザーのパスワードを入力してEnterキーを押します。

正しく接続できると、以下のようなメッセージが表示され、プロンプトがmongosh>に変わります。

“`
Current Mongosh version: …

Using Atlas non-contiguous snapshots for Point-in-Time Restore.
For information about events and meetings, see: https://www.mongodb.com/community/events

To get started, type “help”

“`

これで、Atlas上のMongoDBクラスターにmongoshで接続できました。

5.4 基本的なShellコマンド

mongosh> プロンプトから、MongoDBの操作コマンドを実行できます。

  • データベース一覧の表示:
    javascript
    show dbs

    (接続しているクラスターに存在するデータベースが表示されます。初回はadmin, config, localなどのシステムデータベースのみが表示されるはずです。)

  • データベースの選択:
    操作したいデータベースを選択します。存在しないデータベース名を指定した場合、その名前で新しいデータベースが作成されます(ただし、コレクションに最初のドキュメントを挿入するまでは物理的には作成されません)。
    javascript
    use myDatabase

    プロンプトがmyDatabase>に変わります。

  • コレクション一覧の表示:
    選択中のデータベース内のコレクション一覧を表示します。
    javascript
    show collections

  • データの挿入 (Create):
    db.<コレクション名>.insertOne()またはdb.<コレクション名>.insertMany()を使います。コレクションが存在しない場合、自動的に作成されます。

    “`javascript
    // 1件のドキュメントを挿入
    db.users.insertOne({ name: “Alice”, age: 30, city: “Tokyo” })

    // 複数のドキュメントを挿入
    db.products.insertMany([
    { name: “Laptop”, price: 1200, stock: 50 },
    { name: “Mouse”, price: 25, stock: 200 },
    { name: “Keyboard”, price: 75, stock: 150 }
    ])
    ``
    挿入に成功すると、挿入されたドキュメントの
    _id`などが表示されます。

  • データの検索 (Read):
    db.<コレクション名>.find()を使います。引数なしで全てのドキュメントを取得できます。クエリ条件を指定して絞り込むこともできます。

    “`javascript
    // 全てのドキュメントを取得
    db.users.find()

    // 条件を指定してドキュメントを取得
    db.users.find({ age: { $gt: 25 } }) // ageが25より大きいドキュメント

    // 特定のフィールドのみ表示 (Projection)
    db.users.find({}, { name: 1, city: 1, _id: 0 }) // nameとcityのみ表示 (_idはデフォルトで表示されるので明示的に除外)

    // 1件のドキュメントを取得
    db.products.findOne({ name: “Laptop” })
    ``find()はカーソルを返すので、結果全体を見るには.pretty()を付けて整形表示させたり、.limit()`で件数を絞ったりします。

  • データの更新 (Update):
    db.<コレクション名>.updateOne()またはdb.<コレクション名>.updateMany()を使います。最初の引数で更新対象のドキュメントを指定し、第二引数で更新内容を指定します($setなどの更新オペレーターを使用します)。

    “`javascript
    // 特定のユーザーの年齢を更新
    db.users.updateOne({ name: “Alice” }, { $set: { age: 31 } })

    // 在庫が100以下の商品の価格を10%値上げ
    db.products.updateMany({ stock: { $lte: 100 } }, { $mul: { price: 1.1 } })
    “`
    更新件数などが表示されます。

  • データの削除 (Delete):
    db.<コレクション名>.deleteOne()またはdb.<コレクション名>.deleteMany()を使います。引数で削除対象のドキュメントを指定します。

    “`javascript
    // 特定のユーザーを削除
    db.users.deleteOne({ name: “Bob” }) // Bobというnameの最初のドキュメントを削除

    // 在庫が10以下の全ての商品を削除
    db.products.deleteMany({ stock: { $lte: 10 } })

    // コレクション内の全てのドキュメントを削除 (コレクション自体は残る)
    db.users.deleteMany({})
    “`
    削除件数などが表示されます。

  • シェルからの切断:
    javascript
    exit

    またはCtrl+Cを2回押します。

5.5 Shellの便利な機能

  • ヘルプ: helpコマンドで基本的なコマンド一覧が表示されます。特定のオブジェクト(例: db.users.help())のヘルプも参照できます。
  • JavaScript実行: mongoshはJavaScriptエンジンを内蔵しているため、JavaScriptの構文を使って変数宣言やループ処理なども行えます。
  • スクリプト実行: .jsファイルにコマンドを書いて、mongosh <script.js>のように実行できます。

このセクションのまとめ: mongoshを使えば、コマンドラインからAtlasクラスターに接続し、基本的なCRUD操作を行えます。Atlasから取得した接続文字列を使用し、IPアドレス許可とデータベースユーザー認証が必要です。use, show collections, insertOne, find, updateOne, deleteOneなどがよく使うコマンドです。

6. MongoDB Compassからの接続と操作

MongoDB Compassは、MongoDB Inc. が提供する公式のGUI(グラフィカルユーザーインターフェース)ツールです。データベースやコレクションの構造を視覚的に確認したり、データの挿入・編集・削除をGUI操作で行ったり、クエリ結果を確認したりするのに非常に便利です。初心者にはShellよりもCompassの方が直感的に操作できるためおすすめです。

6.1 MongoDB Compassのインストール

まず、ご自身の環境にMongoDB Compassをインストールする必要があります。MongoDBの公式サイトからOSに合ったインストーラーをダウンロードしてください。

  • MongoDB Compassのダウンロードページ: https://www.mongodb.com/try/download/compass

ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させてください。

6.2 Atlasからの接続文字列取得

Atlas管理画面に戻り、Connectウィンドウを開き、「Connect with MongoDB Compass」を選択します。

  • Compassがインストール済みであることを確認し、バージョンを選択(通常は最新バージョン)します。
  • Atlasが接続文字列を生成して表示してくれます。これはShellの場合と同様の形式です。
    mongodb+srv://<username>:<password>@<cluster-url>/<database-name>?retryWrites=true&w=majority
  • この接続文字列をコピーします。Compassでは、ユーザー名とパスワードは自動的に分離されて入力されることが多いため、表示された接続文字列をそのままコピーして問題ありません。

6.3 Compassでの接続

MongoDB Compassを起動します。

  1. Compassの起動画面が表示されます。「Connect」タブの「New Connection」セクションに、コピーした接続文字列をペーストするためのフィールドがあります。
  2. コピーした接続文字列をそのフィールドにペーストします。Compassが接続文字列を解析し、ホスト名、ポート番号、認証情報などを自動的に設定してくれます。
  3. ユーザー名とパスワードが自動で入力されていない場合は、手動で入力が必要かもしれません。認証方法が「Username / Password」になっていることを確認し、Atlasで作成したデータベースユーザーのユーザー名とパスワードを入力します。
  4. 入力が終わったら、画面左下の「Connect」ボタンをクリックします。

正しく接続できると、Compassの画面に接続先のAtlasクラスター名が表示され、その中に存在するデータベース一覧が表示されます。

6.4 CompassのUI紹介と基本的な操作

Compassのメイン画面では、左側にデータベース一覧が表示されます。いずれかのデータベース名をクリックすると、そのデータベースに含まれるコレクション一覧が表示されます。さらにコレクション名をクリックすると、そのコレクションのデータやスキーマなどを様々なタブで確認・操作できます。

  • Documents (ドキュメント):
    コレクション内のドキュメントを一覧表示します。JSON形式、テーブル形式、リスト形式で表示を切り替えられます。

    • データの検索: 画面上部のフィルターバーを使って、クエリ条件を指定してドキュメントを絞り込むことができます。例えば、{ age: { $gt: 25 } } と入力して「Find」をクリックすると、ageが25より大きいドキュメントのみが表示されます。
    • データの挿入: 画面右上の「Add Data」ボタンから「Insert Document」を選択し、JSON形式で新しいドキュメントを入力して挿入できます。
    • データの編集: 各ドキュメントの右側に表示される鉛筆アイコンをクリックして、ドキュメントをインラインで編集できます。編集後に「Update」をクリックして保存します。
    • データの削除: 各ドキュメントの右側に表示されるゴミ箱アイコンをクリックして、ドキュメントを削除できます。
    • Projection (表示フィールドの絞り込み): フィルターバーの右隣にある「Project」バーを使って、表示するフィールドを限定できます。例えば、{ name: 1, city: 1, _id: 0 } と入力すると、nameとcityのみが表示されます。
    • Sort (ソート): フィルターバーの右隣にある「Sort」バーを使って、表示順序を指定できます。例えば、{ age: 1 } と入力すると、ageの昇順で表示されます。
    • Options (オプション): スキップ件数や取得件数などのオプションを指定できます。
  • Schema (スキーマ):
    コレクション内のドキュメントのスキーマ構造を分析し、各フィールドのデータ型や分布を表示します。MongoDBのドキュメントは柔軟なスキーマを持ちますが、この機能を使うことで、実際に保存されているデータの構造を把握できます。

  • Explain Plan (実行計画):
    実行したクエリがどのように実行されたか、インデックスが使用されたかなどを分析できます。クエリのパフォーマンスチューニングに役立ちます。

  • Indexes (インデックス):
    コレクションに作成されているインデックスの一覧を表示したり、新しいインデックスを作成したりできます。適切なインデックスはクエリのパフォーマンスを大幅に向上させます。

  • Aggregation (集計):
    複雑なデータ集計を行うためのAggregation PipelineをGUIで構築・実行できます。

Compassを使えば、視覚的にMongoDBのデータを操作・分析できるため、特にMongoDB初心者にとってはデータの構造理解やクエリの試行錯誤がしやすくなります。

このセクションのまとめ: MongoDB Compassは公式のGUIツールで、データの視覚的な操作や分析に便利です。Atlasから取得した接続文字列を使って簡単に接続できます。DocumentsタブでCRUD操作、Schemaタブでデータ構造分析、Indexesタブでインデックス管理などが可能です。

7. アプリケーションからの接続

開発したアプリケーションからMongoDB Atlasクラスターに接続するには、使用しているプログラミング言語に対応したMongoDBドライバーを使用します。ここでは、多くのWebアプリケーションで使用されるNode.jsを例に、簡単な接続とデータ取得のコードを紹介します。他の言語でも基本的な流れは同じです。

7.1 ドライバーのインストール

Node.jsの場合、公式ドライバーであるmongodbパッケージをインストールします。プロジェクトのルートディレクトリで以下のコマンドを実行します。

bash
npm install mongodb

7.2 Atlasからの接続文字列取得 (アプリケーション向け)

Atlas管理画面に戻り、Connectウィンドウを開き、「Connect your Application」を選択します。

  1. 使用しているドライバーと言語を選択します。(例: Node.js)
  2. バージョンを選択します。(通常は最新バージョン)
  3. Atlasが接続文字列を生成して表示してくれます。この接続文字列には、<password>の部分が含まれています。

    javascript
    // Example connection string (replace with your own)
    const uri = "mongodb+srv://<username>:<password>@<cluster-url>/<database-name>?retryWrites=true&w=majority";

  4. この接続文字列をコピーします。重要な注意点として<password>の部分には、Atlasで作成したデータベースユーザーのパスワードを自分で入力する必要があります。また、本番環境では、このパスワードをコードに直接記述せず、環境変数や設定ファイルなどで安全に管理するようにしましょう。

7.3 サンプルコード (Node.js)

以下は、Node.jsアプリケーションからAtlasに接続し、データを取得する簡単な例です。

“`javascript
const { MongoClient, ServerApiVersion } = require(‘mongodb’);

// Atlas管理画面から取得した接続文字列を使用します。
// は、実際のユーザー名とパスワードに置き換えてください。
// もご自身のクラスターのURLに置き換えてください。
// は接続後デフォルトで選択されるデータベース名ですが、
// connection string に含めなくても構いません。省略した場合は接続後に use コマンドに相当する操作が必要です。
const uri = “mongodb+srv://:@/?retryWrites=true&w=majority”;

// 新しいMongoClientを作成します。
// ServerApiVersion を指定することで、将来的な互換性を確保できます。
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
});

async function run() {
try {
// Atlasクラスターに接続します。
await client.connect();

// 接続が成功したことを確認します。
await client.db("admin").command({ ping: 1 });
console.log("Pinged your deployment. You successfully connected to MongoDB!");

// 使用するデータベースとコレクションを指定します。
// ここでは例として myDatabase というデータベースの users コレクションを使います。
// 実際のデータベース名とコレクション名はご自身の環境に合わせてください。
const database = client.db("myDatabase"); // データベース名
const usersCollection = database.collection("users"); // コレクション名

// コレクションからドキュメントを取得する例
const users = await usersCollection.find({}).toArray();
console.log("Found users:");
console.log(users);

// ドキュメントを挿入する例
// const insertResult = await usersCollection.insertOne({ name: "Bob", age: 25, city: "Osaka" });
// console.log("Inserted user:", insertResult.insertedId);

// ドキュメントを更新する例
// const updateResult = await usersCollection.updateOne({ name: "Bob" }, { $set: { age: 26 } });
// console.log("Updated users:", updateResult.modifiedCount);

// ドキュメントを削除する例
// const deleteResult = await usersCollection.deleteOne({ name: "Bob" });
// console.log("Deleted users:", deleteResult.deletedCount);

} finally {
// 接続をクローズします。
// 通常、Webアプリケーションでは接続プールを利用し、アプリケーション終了時にクローズします。
await client.close();
}
}

run().catch(console.error);
“`

このコードでは、以下のステップを実行しています。

  1. mongodbパッケージから必要なクラスをインポートします。
  2. Atlasから取得した接続文字列を設定します。ユーザー名とパスワードを適切に置き換える必要があります。
  3. MongoClientの新しいインスタンスを作成します。serverApiオプションは将来的な互換性のために推奨されています。
  4. client.connect()を呼び出して、Atlasクラスターへの接続を確立します。非同期処理のためawaitを使用します。
  5. client.db()メソッドで操作したいデータベースを指定します。
  6. database.collection()メソッドで操作したいコレクションを指定します。
  7. 指定したコレクションに対して、find(), insertOne(), updateOne(), deleteOne()などのメソッドを呼び出してデータベース操作を実行します。
  8. client.close()を呼び出して接続を閉じます。

7.4 接続プール (Connection Pooling)

上記のサンプルコードでは、操作が終わるたびに接続を閉じていますが、実際のアプリケーションでは通常「接続プール」を利用します。接続プールは、確立済みのデータベース接続を複数管理しておき、リクエストがあるたびにプールから接続を取得して再利用する仕組みです。これにより、接続の確立にかかるオーバーヘッドを削減し、アプリケーションのパフォーマンスを向上させることができます。

多くのMongoDBドライバーはデフォルトで接続プールを有効にしており、MongoClientインスタンスは通常、アプリケーションの起動時に一度だけ作成し、そのインスタンスを共有してデータベース操作を行います。アプリケーションが終了する際にclient.close()を呼び出すのが一般的なパターンです。

このセクションのまとめ: アプリケーションからAtlasに接続するには、言語に対応したMongoDBドライバーを使用します。Atlasから取得した接続文字列にパスワードを設定し、コード内でMongoClientインスタンスを作成して接続します。実際のアプリケーションでは、パフォーマンスのために接続プールを利用するのが一般的です。

8. Atlasのその他の機能紹介 (初心者向け)

MongoDB Atlasには、これまで紹介した基本的なデータベース機能以外にも、開発や運用を効率化するための様々な機能が統合されています。初心者向けに、いくつか主要な機能をご紹介します。

  • Data Explorer:
    Atlas管理画面のブラウザ上から、データベースのデータを確認・操作できるGUIツールです。MongoDB Compassをインストールしなくても、ブラウザ上で簡単なCRUD操作やデータ閲覧が可能です。左側のメニューから「Data Explorer」を選択すると利用できます。簡単なデータ確認には非常に便利です。

  • Metrics (監視):
    クラスターのパフォーマンスや稼働状況を監視するためのグラフや統計情報を提供します。CPU使用率、メモリ使用量、ネットワークトラフィック、データベース接続数、オペレーション数、クエリ実行時間などの重要な指標を確認できます。左側のメニューから「Metrics」を選択します。問題発生時の原因調査や、スケーリングが必要かどうかの判断に役立ちます。

  • Backups (バックアップ):
    自動バックアップの設定を確認・管理できます。Free Tierでは日次スナップショットが自動で取得されます。左側のメニューから「Backup」を選択すると、取得済みのスナップショットを確認したり、そこからデータをリストアしたりできます。本番環境では、よりきめ細かいスケジュール設定やポイントインタイムリカバリ機能が利用可能です(有料ティア)。

  • Atlas Search:
    MongoDBデータに対して強力なフルテキスト検索機能を追加できます。キーワード検索、ファセット検索、オートコンプリートなど、Webサイトの検索機能のようなものを簡単に実装できます。内部的にはApache Lucene(Elasticsearchのコア技術)をベースとしています。

  • Atlas Data Lake:
    Amazon S3などのクラウドストレージに保存されたデータを、MongoDBクエリ言語(MQL)を使って直接クエリできる機能です。MongoDBにインポートすることなく、大量のデータを分析したい場合に有用です。

  • Realm (Atlas App Services):
    モバイルアプリやWebアプリのバックエンド機能をサーバーレスで提供するサービスです。MongoDB Atlasとの連携が非常にスムーズで、認証、リアルタイム同期、サーバーレス関数などを簡単に実装できます。

これらの機能は、Free Tierでも一部利用できたり、有料ティアでより高度な機能が提供されたりします。最初は基本的なデータベース操作に慣れることから始め、必要に応じてこれらの機能を試してみると良いでしょう。

このセクションのまとめ: Atlasは基本的なデータベース機能に加え、Webブラウザでのデータ操作 (Data Explorer)、パフォーマンス監視 (Metrics)、自動バックアップ (Backups)、高度な検索 (Atlas Search) など、様々な便利機能を提供しています。

9. 運用上の考慮事項 (Free Tier利用時)

Free Tier (M0) は学習や開発の開始には最適ですが、いくつかの重要な制限と注意点があります。これらを理解しておくことは、予期せぬ問題を防ぐために不可欠です。

  • リソースの制限:
    • ストレージ: 512MBは非常に少ない容量です。少しデータを投入しただけで上限に達してしまう可能性があります。上限に達すると、データの書き込みができなくなります。
    • 共有リソース: CPUやメモリは他のFree Tierユーザーと共有されます。そのため、パフォーマンスが安定しないことがあります。高い負荷がかかると、処理が遅延したり、接続が不安定になったりする可能性があります。
    • IOPS (Input/Output Operations Per Second): ストレージへの読み書き性能にも制限があります。
  • アイドル時の自動停止:
    M0クラスターは、一定時間アクティビティがないとアイドル状態と見なされ、自動的に停止することがあります。これはリソースの節約のためですが、次にアクセスしようとした際にクラスターが起動するまで数分待たされることになります。これは仕様であり故障ではありません。 もし頻繁にアクセスする予定がある場合は、定期的に(例えば数時間に一度)簡単な読み込みクエリを実行するなどの対策が必要になる場合があります。または、有料ティアにアップグレードすれば自動停止はなくなります。
  • 本番環境での利用は避ける:
    Free TierはSLA(サービスレベル契約)の対象外であり、リソース保証もありません。重要なアプリケーションの本番環境で利用することは、信頼性、可用性、パフォーマンスの観点から絶対におすすめしません。本番環境には、Dedicated Clusters (M10以上) や Serverless を検討してください。
  • サポート:
    Free Tierのサポートはコミュニティフォーラムが中心となります。技術的な問題が発生しても、迅速な個別サポートは受けられません。

これらの制限を理解した上でFree Tierを活用しましょう。学習や小規模な個人プロジェクトには十分な場合もありますが、アプリケーションが成長したり、より安定した運用が必要になったりした場合は、早めに有料ティアへのアップグレードを検討しましょう。

このセクションのまとめ: Free Tierはストレージやコンピューティングリソースが限られ、アイドル時に自動停止することがあります。本番環境での利用は推奨されず、学習・開発目的に限定すべきです。

10. トラブルシューティング (よくある問題)

MongoDB Atlasの利用中に遭遇する可能性のある、いくつか一般的な問題とその解決策を紹介します。

  • Atlasに接続できない:
    • IPアドレスのホワイトリスト: 最もよくある原因は、接続元のグローバルIPアドレスがAtlasのNetwork Access設定で許可されていないことです。Atlas管理画面の「Network Access」から、現在のIPアドレスまたは必要なIPアドレスを追加・確認してください。会社や自宅のネットワーク設定(特にVPNやプロキシ)によっては、IPアドレスが頻繁に変わる場合があるので注意が必要です。
    • データベースユーザーの認証情報: ユーザー名やパスワードが間違っている可能性があります。Atlas管理画面の「Database Access」でユーザー名を確認し、必要であればパスワードをリセットしてください。パスワードをコピー&ペーストする際に、不要なスペースなどが入っていないかも確認しましょう。
    • 接続文字列の間違い: コピーした接続文字列が不完全だったり、ユーザー名やパスワードのプレースホルダーが正しく置換されていなかったりする可能性があります。Atlas管理画面のConnectウィンドウから接続文字列を再度コピーしてみてください。
    • ファイアウォールやセキュリティソフト: ご自身のPCやネットワークのファイアウォール、セキュリティソフトがMongoDBへの通信(デフォルトポートは27017、ただしAtlas SRV接続では不要)をブロックしている可能性があります。必要に応じて設定を見直してください。
    • クラスターの状態: クラスターが正常に稼働しているか(Running状態か)Atlas管理画面で確認してください。Free Tierの場合、アイドルで停止している可能性もあります。
  • クエリの実行が遅い、パフォーマンスが悪い:
    • Free Tierの制限: Free Tierはリソースが共有されているため、根本的にパフォーマンスには限界があります。これが原因の場合は、有料ティア(M10以上またはServerless)へのアップグレードを検討してください。
    • インデックスの不足: 適切なインデックスがないと、データの検索(find)やソート(sort)のパフォーマンスが著しく低下します。Compassやmongoshを使って、よく実行するクエリに対してインデックスを作成してみてください。
    • クエリの効率: 集計処理(Aggregation Framework)などで、効率の悪いパイプラインになっている可能性があります。CompassのExplain Plan機能などを活用して、クエリの実行計画を分析し、ボトルネックを特定しましょう。
    • データ量の増加: データ量がFree Tierの容量制限に近づくと、パフォーマンスが低下する可能性があります。
  • データベースユーザーのパスワードを忘れた:
    Atlas管理画面の「Database Access」を開き、該当するユーザーの右側にある「Edit」または3点リーダ (…) をクリックし、「Reset Password」を選択して新しいパスワードを設定できます。

これらのトラブルシューティングのポイントを参考に、問題解決にあたってください。多くの場合、Atlas管理画面の設定確認や、公式ドキュメントの参照が役立ちます。

このセクションのまとめ: 接続できない問題はIPアドレス許可や認証情報のミスが、パフォーマンス問題はFree Tierの制限やインデックス不足が主な原因です。Atlas管理画面や公式ドキュメントを活用してトラブルシューティングを行いましょう。

11. 次のステップ

基本的なAtlasクラスターの作成、接続、データ操作に慣れてきたら、さらにMongoDBとAtlasの理解を深めて、より高度な機能を活用してみましょう。

  • Atlasの高度な機能:
    • Auto Scaling: ワークロードの変動に応じて、コンピューティングリソースやストレージ容量を自動的にスケーリングする機能(Dedicated Clusters向け)。
    • Read Replicas: 読み込み処理の負荷分散のために、追加のレプリカノードを別のリージョンやクラウドプロバイダーに配置する機能。
    • Sharding: 大量のデータを複数のサーバーに分散して格納し、スケーラビリティを向上させる機能。
    • Atlas Data Federation: 複数のAtlasクラスターやData Lakeを跨いでデータをクエリできる機能。
    • Atlas Vector Search: ベクトル埋め込みを保存し、セマンティック検索や類似性検索を実行する機能。
  • Aggregation Framework: MongoDBの強力なデータ集計機能です。複雑なレポート作成やデータ変換に不可欠です。ShellやCompass、アプリケーションドライバーから利用できます。
  • インデックス戦略: アプリケーションのクエリパターンに合わせて、適切なインデックスを作成・管理することは、パフォーマンスチューニングにおいて最も重要です。複合インデックス、テキストインデックス、地理空間インデックスなど、様々な種類のインデックスがあります。
  • セキュリティの詳細設定: よりセキュアな環境を構築するために、VPC PeeringやPrivate Endpointを使ったネットワーク分離、Client-Side Field Level Encryptionによるデータ暗号化などを検討できます(有料ティア)。
  • 公式ドキュメントとチュートリアル: MongoDBやAtlasの公式ドキュメントは非常に充実しています。特定の機能の使い方や、ベストプラクティスについて深く学ぶには、公式情報を参照するのが一番です。MongoDB Universityでは無料のオンラインコースも提供されています。
  • データモデリング: ドキュメント指向データベースにおける効果的なデータモデル設計について学びましょう。RDBとは異なる考え方が必要になります。

これらのステップに進むことで、MongoDBとAtlasをより効果的に活用し、高性能でスケーラブルなアプリケーションを開発できるようになります。

このセクションのまとめ: 基本操作を習得したら、Atlasの高度な機能、Aggregation Framework、インデックス、セキュリティについて学び、公式ドキュメントやチュートリアルを活用してスキルアップを図りましょう。

12. まとめ

この記事では、MongoDB Atlasを初めて使う方のために、アカウント作成からFree Tierクラスターの構築、そしてShell、Compass、アプリケーションからの接続・基本的なデータ操作までを、詳細な手順とともに解説しました。

MongoDB Atlasを利用することで、従来の手動でのデータベース構築・運用に比べて、はるかに簡単にMongoDBを使い始めることができます。サーバー管理の知識や手間から解放され、開発に集中できるのが最大の魅力です。

まずは無料のFree Tierを活用して、Atlasの使い勝手やMongoDBのドキュメント指向モデルに慣れてみましょう。ただし、Free Tierにはリソース制限があるため、本格的な開発や本番環境での利用を検討する際には、必ず有料ティアへのアップグレードが必要です。

Atlasは、単なるクラウド上のMongoDBというだけでなく、監視、バックアップ、スケーリング、セキュリティ、検索、データレイクなど、様々な付加価値機能を提供しています。これらの機能を活用することで、アプリケーション開発の効率と品質を向上させることができます。

この記事が、あなたがMongoDB Atlasを使い始めるための一助となれば幸いです。クラウドデータベースの世界へようこそ!疑問点やさらに深く学びたい点があれば、MongoDBの公式ドキュメントやコミュニティフォーラムをぜひ活用してください。

これで、約5000語の詳細な記事が完成しました。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール