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

moveRange(データベースコマンド)

moveRange

バージョン6.0の新機能。

Moves ranges between shards. Run the moveRange command with a mongos instance while using the admin database.

Tip

In mongosh, this command can also be run through the sh.moveRange() helper method.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

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

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

注意

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

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

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

このコマンドの構文は、次のとおりです。

db.adminCommand(
{
moveRange: <namespace>,
toShard: <ID of the recipient shard>,
min: <min key of the range to move>, // conditional
max: <max key of the range to move>, // conditional
forceJumbo: <bool>, // optional
writeConcern: <write concern>, // optional
secondaryThrottle: <bool> // optional
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明

toShard

string

受信者シャードの ID。

min

キー

移動する範囲の最小キー。 maxを指定しない場合は必須です。

minを指定しない場合、チャンクCにおいて、 maxがCの排他的上限であるか、 Cにシャードキーmaxが含まれていると仮定すると、 minは次のように決定されます。 :

  • min(C)からmaxの範囲のデータ サイズが、コレクションごとのチャンク サイズまたはデフォルトのチャンク サイズより小さい場合、チャンクのmin値はmin = min(C)として選択されます。

  • それ以外の場合、キーmin > min(C)の場合、 minは構成されたチャンク サイズによって異なります。

max

キー

移動する範囲の最大キー。 minを指定しない場合は必須です。

maxを指定しない場合、シャードキーminを含むチャンクCがある場合、 maxは次のように決定されます。

  • minからmax(C)の範囲のデータ サイズが、コレクションごとのチャンク サイズまたはデフォルトのチャンク サイズより小さい場合、チャンクの最大値はmax = max(C)として選択されます。

  • それ以外の場合、キーmax < max(C)は、 maxが構成されたチャンク サイズによって異なります。

ブール値

任意。

コマンドが 移行するには大きすぎる範囲を移動できるかどうかを決定するフラグです。 その範囲にはジャンボ というラベルが付いている場合と付いていない場合があります。

  • trueの場合、 コマンドは範囲を移動できます。

  • falseの場合、 コマンドは範囲を移動できません。

デフォルトは false です。

警告:

forceJumbo=true と moveRange コマンドは、コレクションに対する書込み操作をブロックします。

このオプションを指定すると、シャードは、設定された チャンク サイズ よりも大きい場合でも、チャンクを移行します。 コレクションは、 移行中は書き込みができなくなります。

この長いブロッキング期間なしでこれらの大きなチャンクを移行するには、代わりに「サイズ制限を超えるバランス範囲」を参照してください。

writeConcern

ドキュメント

任意。

書込み保証 ( write concern) のあるドキュメント。

デフォルトはw: majorityです。

secondaryThrottle

ブール値

任意。

  • trueの場合、チャンクの移行中に移動された各ドキュメントは、バランサーが次のドキュメントに進む前に少なくとも 1 つのセカンダリに伝達されます。 これは{ w: 2 }の書込み保証 (write concern) と同等です。

    別の書込み保証 (write concern) を指定するには、 writeConcernオプションを使用します。

  • falseの場合、バランサーはセカンダリへのレプリケーションを待たずに次のドキュメントに進みます。

詳細については、「セカンダリ スロットル 」を参照してください。

範囲移行セクションでは、範囲が MongoDB 上のシャード間で範囲がどのように移動されるかについて説明します。

Only use the moveRange in scenarios like:

  • データの初期取り込み

  • 大規模な一括インポート操作

ほとんどの場合、バランサーがシャーディングされたクラスターに範囲を作成し、範囲を作成できるようにします。

次の例では、次の内容を含む コレクションを使用します。

  • シャードキー x

  • 128MB の チャンク サイズ に設定

  • 境界のあるチャンク: [x: 0, x: 100)

次の表は、 minとmaxをさまざまな値に設定した結果を示しています。

min
max
結果

0

100

範囲内のすべてのドキュメントを受信者シャードに移動します。

10

30

3 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x: 10, x: 30)

  • [x: 30, x: 100)

[x: 10, x: 30)内のすべてのドキュメントを受信者シャードに移動します。

0

20

2 つのサブ範囲を作成します。

  • [x: 0, x: 20)

  • [x: 20, x: 100)

[x: 0, x: 20)内のすべてのドキュメントを受信者シャードに移動します。

40

100

2 つのサブ範囲を作成します。

  • [x: 0, x: 40)

  • [x: 40, x: 100)

[x: 40, x: 100)内のすべてのドキュメントを受信者シャードに移動します。

次の表は、 minをさまざまな値に設定した結果を示しています。

min
キー範囲内のデータ量
結果

0

キーx: 0とx: 100の間に含まれる 128 MB 未満。

範囲内のすべてのドキュメントを受信者シャードに移動します。

10

キーx: 0とx: 100の間に含まれる 128 MB 未満。

2 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x : 10, x: 100)

[x: 10, x: 100)内のすべてのドキュメントを受信者シャードに移動します。

10

キーx: 10とx: 30の間に含まれる 128 MB 。

3 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x: 10, x: 30)

  • [x: 30, x: 100)

[x: 10, x: 30)内のすべてのドキュメントを受信者シャードに移動します。

次の表は、 maxをさまざまな値に設定した結果を示しています。

max
キー範囲内のデータ量
結果

100

キーx: 0とx: 100の間に含まれる 128 MB 未満。

範囲内のすべてのドキュメントを受信者シャードに移動します。

10

キーx: 0とx: 100の間に含まれる 128 MB 未満。

2 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x : 10, x: 100)

[x: 0, x: 10)内のすべてのドキュメントを受信者シャードに移動します。

30

キーx: 10とx: 30の間に含まれる 128 MB 。

3 つのサブ範囲を作成します。

  • [x: 0, x: 10)

  • [x: 10, x: 30)

  • [x: 30, x: 100)

[x: 10, x: 30)内のすべてのドキュメントを受信者シャードに移動します。