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

sh.moveCollection()(mongoshメソッド)

sh.moveCollection(namespace, toShard)

シャーディングされていないコレクションを別のシャードに移動します。 sh.moveCollection()mongos管理データベース を使用しながら、 インスタンスで を実行します。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、moveCollection コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

sh.moveCollection() の構文は次のとおりです。

sh.moveCollection( "<namespace>", "<toShard>" )

注意

listShards受信者シャードのIDを取得するには、 コマンドを使用します。

sh.moveCollection() は以下のパラメーターを取ります。

Parameter
タイプ
説明

namespace

string

移動するコレクションのデータベースと名前。

toShard

string

受信者シャードの ID。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、Atlas 無料および Flex 階層では使用できません。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

  • sh.moveCollection() は、シャーディングされたクラスターでのみ実行できます。

  • sh.moveCollection() は、シャーディングされていないコレクションのみを移動できます。

  • sh.moveCollection() は一度に 1 つのコレクションのみを移動できます。

  • sh.moveCollection() の最小期間は5分です。

  • writeConcernMajorityJournalDefaulttrueである必要があります。

  • 一意性制約があるコレクションを移動するには、新しいインデックスが既存のユニークインデックスの一意なインデックス要件を満たす必要があります。

  • 移動されているコレクションがMongoDB Search を使用する場合、moveCollection が完了するとその検索インデックスは使用できなくなります。検索インデックスは手動で再構築する必要があります。

  • 移動するコレクションが Atlas Online Archives にアーカイブされている場合、移動操作の完了後にオンライン アーカイブ ファイルにOrphaned とマークが付けられます。状態の同じ組み合わせのアーカイブが他に存在しない限り、孤立したアーカイブと同じデータベース、コレクション、フィールドの別のオンラインActive アーカイブを作成できます。

  • moveCollectionが完了するまで、シャードの追加や削除、埋め込みコンフィギュレーションサーバーと専用コンフィギュレーションサーバー間での移行などのトポロジー変更を行うことはできません。

  • sh.moveCollection()の進行中に移動されるコレクションに対して次の操作を実行することはできません。

  • moveCollectionが進行中の間は、クラスターに対して次の操作を実行することはできません。

  • sh.moveCollection()の進行中に発生するインデックスビルドは、メッセージが表示されずに失敗する可能性があります。

    • sh.moveCollection()の進行中は、インデックスを作成しないでください。

    • インデックスビルドが進行中の場合は、 sh.moveCollection()を呼び出しないでください。

コレクションを移動する 前に、次の要件を満たしていることを確認してください。

  • アプリケーションは、影響を受けるコレクションが書込みをブロックする期間を2 秒許容できます。 書込み (write) がブロックされている期間中、アプリケーションのレイテンシが増加します。

  • データベースが次のリソース要件を満たしている。

    • コレクションを移動するシャードに、コレクションとそのインデックス用の十分なストレージ領域があることを確認します。 宛先シャードでは少なくとも( Collection storage size + Index Size ) * 2バイトが使用可能である必要があります。

    • I/Oキャパシティーが50 % 未満であることを確認します。

    • CPU 負荷が80 % 未満であることを確認します。

重要

これらの要件はデータベースによって強制されません。 十分なリソースを割り当てられない場合、次の結果が発生する可能性があります。

  • データベースの容量が不足し、シャットダウンした

  • パフォーマンスの低下

  • 操作に予想よりも時間がかかる

アプリケーションにトラフィックが少ない期間がある場合は、可能であれば、その時間中にコレクションに対してこの操作を実行します。

この例では、 appデータベース上のinventoryという名前のシャーディングされていないコレクションをshard02シャードに移動します。

sh.moveCollection( "app.inventory", "shard02" )

使用可能なシャード ID のリストを取得するには、 sh.status()を実行します。 詳細についてはsh.status() 出力 を参照してください。