AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

Atlas Infinite クラスターへデータをロードする

Atlas Infiniteクラスターに独自のデータを読み込むには、次のいずれかの方法を使用します。

  • mongodump および mongorestore: mongodump は、Atlas Core クラスターを含む既存の MongoDB スタンドアロンまたはレプリカセットからデータのバイナリ エクスポートを作成し、mongorestore はそのデータを Atlas Infinite クラスターに読み込みます。ソースデータがMongoDB配置にある場合は、このメソッドを使用します。方法については、「MongoDB配置からのデータの復元」を参照してください。

  • mongoimport: mongoimport は、JSON または CSV ファイルから Atlas Infinite クラスターにドキュメントを読み込みます。ソースデータが MongoDB 外部のファイルにある場合は、このメソッドを使用します。ファイルは、mongoexport またはサードパーティのエクスポートツールから取得できます。学ぶ方法については、「JSON または CSV ファイルからデータをインポートする」を参照してください。

  • 一括書き込み (write) 操作: MongoDB データベースメソッドは、ドキュメントのバッチするを Atlas Infinite クラスターに書き込み (write) ます。アプリケーション、mongosh、Atlas UI、またはその他のインターフェースからドキュメントを自分で生成または変換する場合は、このメソッドを使用します。方法については、「書き込み (write) Data That You Generate.」を参照してください。

これらの各メソッドは、宛先の Atlas Infinite クラスターの書き込み (write) キャパシティーを消費します。アプリケーションへの影響を抑えるため、大規模なデータロードは、システムの利用が少ない時間帯や、スケジュールされたメンテナンスウィンドウの間に実行してください。

次の前提条件を完了します。

mongodumpは、既存のMongoDBスタンドアロンまたはレプリカセットのバイナリダンプを作成し、mongorestoreはそのダンプをAtlas Infiniteクラスターに読み込みます。エクスポートには、ソース配置からのデータ、メタデータ、およびインデックスが含まれます。既存のMongoDBシャーディングされたクラスターからデータをコピーするガイダンスについては、「サポートをリクエスト」を参照してください。

この手順を使用して、Atlas Core上のFreeクラスターまたはFlexクラスターからAtlas Infinite上の専有クラスターにデータを移行することもできます。データを移行するのではなく、FreeクラスターまたはFlexクラスターをその場で増やすには、「FreeクラスターまたはFlexクラスターを専有クラスターに増やす」を参照してください。

この手順にはダウンタイムが必要です。ソース配置への書き込み (write)を停止し、mongodumpとmongorestoreを実行するしてから、アプリケーションをAtlas Infiniteクラスターに切り替えます。

この手順を実行する前に、以下の動作を考慮してください。

  • データの整合性: データの損失を防ぐため、mongodumpを実行する前に、ソース配置への書き込み (write)を一時停止してください。mongodumpをセカンダリから実行する場合は、書き込み (write)を一時停止し、セカンダリがプライマリに追いつくのを待ってからダンプを開始してください。

  • ユーザーとロール: Atlasはデータベースユーザーを管理するため、mongorestoreは既存のデータベースユーザーやロールを移行先のクラスターに移行できません。アプリケーションが必要とするデータベースユーザーを、移行先のAtlas Infiniteクラスターに作成します。詳細については、「データベースユーザーの設定」を参照してください。

  • 排除された名前空間: ダンプ内の admin および config ディレクトリには、mongorestore が Atlas Infinite クラスターに追加できないユーザー情報が含まれています。そのため、この手順では admin.* と config.* を排除します。

  • ホストするリソース: mongodumpは、ソース配置へのネットワークアクセス権を持つホストする環境で実行され、mongorestoreは、アーカイブファイルへのアクセス権と宛先配置へのネットワークアクセス権を持つホストする環境で実行されます。どちらのツールもホスト上のCPUとメモリを使用するため、ホストのパフォーマンスに影響を与える可能性があります。

1

ソース配置で認証が強制されている場合、mongodumpは、移行するすべてのデータベースを読み取ることができるデータベースユーザーとして認証する必要があります。adminデータベースのbackupロールは、これらの権限を付与します。

ソース配置にそのようなユーザーが存在しない場合は、作成してください。データベースユーザーの作成と管理方法については、配置タイプに応じて次のページを参照してください。

2

mongorestoreは、移行するすべてのデータベースに書き込み (write)ができるデータベースユーザーとして認証する必要があります。移行先のAtlas InfiniteクラスターのAtlas adminロールは、これらの権限を付与します。

そのようなユーザーが宛先のAtlas Infiniteクラスターに存在しない場合は、作成してください。Atlasでデータベースユーザーを作成および管理する方法を学ぶには、データベースユーザーの構成を参照してください。

3

mongodump と mongorestore を実行するホストする側から両方の配置に到達できることを確認します。

  • 宛先の Atlas Infinite クラスターを含むプロジェクトの IP アクセス リストにホストするを追加します。ホストを IP アクセス リストに追加する方法については、「IP アクセス リスト エントリの設定」を参照してください。

  • ソースの配置が別のプロジェクトの Atlas Core クラスターである場合は、そのプロジェクトの IP アクセス リストにもホストするを追加します。ソースの配置が自己管理型の場合は、ホストからの接続を受け入れるようにファイアウォールを構成します。詳細を学ぶには、ネットワークと設定の強化を参照してください。

VPCピアリングを設定する場合、ピアの VPC CIDR ブロックまたはサブネット、またはピア VPC のセキュリティ グループを IP アクセス リストに追加できます。詳細については、「IP アクセス リスト」を参照してください。

4
  1. mongodumpコマンドをアセンブルします。

    次の mongodump コマンドテンプレートは、接続文字列を使用してソースレプリカセットまたはスタンドアロンクラスターに接続し、ダンプのアーカイブをファイルに出力します。

    テンプレートを任意のテキストエディターにコピーし、<connectionString> プレースホルダーをソース配置の接続文字列に、<fileName> を作成するアーカイブ ファイルの名前に置き換えます。

    mongodump --uri "<connectionString>" --archive=<fileName>.archive

    ソース配置の接続文字列を構築する学ぶ方法については、接続文字列を参照してください。

    注意

    Ubuntu 18.04でmongodumpまたはmongorestoreを使用している場合、 SRV 接続文字列( mongodb+srv://形式)を--uriオプションとともに使用すると、 cannot unmarshal DNSエラー メッセージが表示されることがあります。 その場合は、次のいずれかのオプションを代わりに使用します。

    • 非 SRV 接続string (mongodb:// 形式)と --uri オプション

    • 直接接続するホストを指定するための--hostオプション

  2. ソース配置へのネットワークアクセス権を持つホストのターミナルまたはコマンドプロンプトから、完成したコマンドを実行します。

    例

    次の mongodump コマンドは、SRV 接続文字列を使用してソース Atlas Core クラスターに接続します。この文字列には、admin データベースで backup ロールを持つデータベースユーザーのユーザー名 (mySourceUsername) とパスワード (mySourcePassword) が含まれています。このコマンドは、ダンプのアーカイブを現在の作業ディレクトリにある mongodump.archive という名前のファイルに出力します。

    mongodump --uri "mongodb+srv://mySourceUsername:mySourcePassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive"
5
  1. mongorestoreコマンドをアセンブルします。

    次の mongorestore コマンド テンプレートは、接続先の Atlas Infinite クラスターに接続文字列を使用して接続し、mongodump によって作成されたアーカイブを復元しまます。これは、--nsExclude を使用して、Atlas がマネージドしている admin と config データベースを除外します。

    テンプレートを好みのテキストエディタにコピーし、以下のプレースホルダーを適切な値に置き換えます。

    • <connectionString>: これを宛先 Atlas Infinite クラスター用の SRV 接続文字列に置き換えてください。宛先クラスターの接続文字列を検索または構築するには、接続文字列を参照してください。

      Atlas admin ロールを持つデータベースユーザーのユーザー名とパスワードを接続文字列に含めます。

    • <filePath>: これと、によって作成されたアーカイブファイルへのパスを置き換えてください。mongodump。

    注意

    ユーザー名またはパスワードに次の文字が含まれている場合、それらの文字は パーセント エンコーディング を使用して変換する必要があります。

    $ : / ? # [ ] @
    mongorestore --uri "<connectionString>" \ --archive="<filePath>" \ --nsExclude "admin.*" \ --nsExclude "config.*"
  2. mongodumpによって作成されたアーカイブファイルにアクセスできるホストする上のターミナルまたはコマンドプロンプトから、完成したコマンドを実行します。

    例

    次の mongorestore コマンドは、Atlas admin ロールを持つデータベースユーザーのユーザー名 (myDestinationUsername) とパスワード (myDestinationPassword) を含む SRV 接続文字列を使用して Atlas Infinite クラスターに接続します。このコマンドは、mongodump によって作成された mongodump.archive にあるアーカイブを復元します。ただし、admin データベースと config データベースは除外されます。

    mongorestore --uri "mongodb+srv://myDestinationUsername:myDestinationPassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive" \ --nsExclude "admin.*" \ --nsExclude "config.*"
6

移行が完了したら、Atlas Infiniteクラスターに接続し、データが正常に移行されたことを確認します。クエリを実行して、移行先クラスターにコレクションとドキュメントが存在することを確認できます。

7

移行を確認した後、アプリケーションを更新して、ソースの配置ではなくAtlas Infiniteクラスターに接続するようにします。Atlas Infiniteクラスターに対して正しい接続文字列と認証情報を使用していることを確認してください。

mongoimportは、JSONまたはCSVファイルを読み取り、各レコードをAtlas Infiniteクラスターのコレクションに挿入します。このファイルは、サードパーティのエクスポートツールから取得できます。MongoDB配置からAtlas Infiniteクラスターにデータを復元するには、MongoDB配置からのデータの復元を参照してください。

この手順を実行する前に、以下の動作を考慮してください。

  • Extended JSON: mongoimport は特定の BSON types に対して厳密モード表現を使用します。

  • ドキュメントのみ: mongorestoreとは異なり、mongoimportはドキュメントのみを読み込み、コレクションオプションやインデックス定義は読み込みません。インポートが完了したら、移行先のAtlas Infiniteクラスターでインデックスを作成します。

  • ホストするリソース: mongoimport は、ファイルが配置されているホストする上で実行され、そのホストするのCPUとメモリを使用します。

  • その他のインターフェース: コマンドラインを使用せずにファイルを読み込むには、JSON および CSV ファイルをインポートする MongoDB Compass または、コピーするか入力するかで JSON ドキュメントを挿入する Atlas UI を使用します。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。

前の手順を完了すると、[ データベースとネットワーク アクセス ] ページが表示されます。

2

mongoimportを実行してAtlasクラスターに書き込み (write)には、データをインポートするデータベースでreadWrite権限を持つデータベースユーザーを指定する必要があります。たとえば、Atlas adminロールを持つユーザーにはこれらの権限が付与されます。

そのようなユーザーが存在しない場合は、ユーザーを作成します。

  1. まだ表示されていない場合は Database Users タブをクリックします。

  2. Add New Database User をクリックします。

  3. Atlas admin ユーザーを追加します。

3
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. サイドバーで、 Database見出しの下のClustersをクリックします。

[ Clusters (クラスター) ] ページが表示されます。

4

データを移行する Atlas クラスターのConnectをクリックします。

5

mongoimportを実行するホストがIP アクセス リストにない場合は、更新します。次のいずれかを指定できます。

  • mongoimport が実行されるサーバーのパブリック IP アドレス、または

  • VPC ピアリングを設定する際、クラウドプロバイダーとして AWS を選択した場合、ピア VPC の CIDR ブロック(またはサブネット)またはピア VPC のセキュリティグループのいずれかとなります。

6

MongoDB Atlas クラスターには、接続文字列 URI を使用して接続できます。接続ダイアログボックスで、次の手順を実行します。

  1. [Drivers] をクリックします。

  2. 手順 1 で見つかった接続文字列をコピーします。

  3. PASSWORD を root ユーザーのパスワードに置き換え、DATABASE を接続先のデータベースの名前に置き換えます。

    重要

    提供された <PASSWORD> 内の@ 文字をすべてエスケープする必要があります。たとえば、p@ssword は p%40ssword にする必要があります。

この接続文字列は、--uri オプションで mongoimport するように指定されます。

--host を使用する際、Atlas クラスターがレプリカセットである場合は、レプリカセット名も取得する必要があります。例:

myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017
7

一括書き込み (write)操作では、単一のリクエストで多数の書き込み (write)をAtlas Infiniteクラスターに送信するため、ネットワークのラウンドトリップが減少し、書き込みスループットが向上します。既存の配置やファイルからデータをコピーするのではなく、生成したドキュメントをAtlas Infiniteクラスターに書き込み (write)するには、この方法を選択してください。

この手順を実行する前に、以下の動作を考慮してください。

  • 一括書き込み (write) の動作: 一括書き込み (write) リクエストで指定する書き込み (write) 操作とオプションによって、MongoDB が書き込み (write) 操作を順序付け、エラーを取り扱い、リクエストの結果を報告する方法が決まります。これらの選択が書き込み (write) の動作にどのように影響するかを学ぶには、bulkWrite() リファレンスページを参照してください。

  • その他のインターフェース: バッチするロジックなしで少数のドキュメントを書き込み (write)するには、insertMany() または insertOne()(mongosh または MongoDB ドライバーから)、あるいはAtlas UIを使用します。Atlas UIでは、貼り付けまたは入力したJSONドキュメントが挿入されます。

1

この手順で一括書き込み (write)操作を実行するには、mongoshを使用してクラスターに接続します。方法を学ぶには、「Atlasクラスターへの接続」を参照してください。

また、MongoDBドライバーを使用したアプリケーションコード、Atlas UI、またはクラスターに接続するその他のインターフェースから、一括書き込み (write)操作を実行することもできます。各インターフェースでの同等の操作を学ぶには、「一括書き込み (write)操作」を参照してください。

2

単一のコレクションに書き込み (write)を行うには、bulkWrite()を実行します。書き込み (write)操作の種類と一括書き込み (write)オプションについて詳しく学ぶには、bulkWrite().を参照してください。

たとえば、次のコマンドは inventory コレクションに 2 つのドキュメントを挿入します。

db.inventory.bulkWrite( [ { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f1"), item: "notebook", qty: 50 } } }, { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f2"), item: "pencil", qty: 100 } } }] )

1つのリクエストで複数のコレクションやデータベースに書き込み (write)を行うには、bulkWrite()を実行し、各操作の名前空間を指定します。例、次のコマンドはsales.inventoryコレクションに1つのドキュメントを挿入し、supplies.inventoryコレクションに1つのドキュメントを挿入します。

db.getMongo().bulkWrite( [ { namespace: "sales.inventory", name: "insertOne", document: { item: "notebook", qty: 50 } }, { namespace: "supplies.inventory", name: "insertOne", document: { item: "pencil", qty: 100 } }] )

デフォルトでは、一括書き込み (write) 操作は順番に実行され、最初のエラーで停止します。実行する順序を設定する方法を学ぶには、「操作の実行」を参照してください。

3

操作が返すカウントを検討し、各ターゲットコレクションのドキュメント数を確認します。詳細を学ぶには、出力を参照してください。

一括書き込み (write)操作のエラーを取り扱う方法を学ぶには、エラー処理を参照してください。

Atlas Infiniteのパブリックプレビューにおける制限事項の全リストについては、「パブリックプレビューの可用性」を参照してください。Atlas Infiniteクラスターにデータを読み込む際には、以下の制限が適用されます。

  • oplogリプレイなし: Atlas Infiniteはoplogリプレイをサポートしていません。Atlas Infiniteクラスターでは、mongodump --oplogオプションやmongorestore --oplogReplayオプションを使用しないでください。

  • Queryable Encryption とクライアント側フィールドレベル暗号化: mongodump または mongorestore は、Queryable Encryption または クライアント側フィールドレベル暗号化 を使用するコレクションでは使用できません。

  • エディション間のライブ移行と復元する: Atlas Infinite は、Atlas Core クラスターと Atlas Infinite クラスター間のライブ移行またはバックアップと復元するをサポートしていません。2つの配置オプション間のアーキテクチャの違いにより、スナップショットとライブ移行は互換性がありません。