Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

ドキュメントのシャードキー値の変更

項目一覧

シャードキー フィールドが不変の _idフィールドでない限り、ドキュメントのシャードキー値を更新できます。

重要

シャードキー値の更新時

  • を使用している 必要mongos があります。シャードに直接操作を実行しないでください 。

  • トランザクション内で、または 再試行可能な書き込みとして実行する必要があります

  • クエリフィルターの完全なシャードキーに等価条件を含める必要があります 。 たとえば、 { activityid: 1, userid : 1 }をシャードキーとして使用するmessagesコレクションで考えてみましょう。 ドキュメントのシャードキー値を更新するには、クエリフィルターにactivityid: <value>, userid: <value>を含める必要があります。 必要に応じて、クエリに追加のフィールドを含めることができます。

シャーディングされたコレクションに対して実行される場合のその他の操作固有の要件については、特定の書込みコマンド/メソッドも参照してください。

シャードキー値を更新するには、次の操作を使用します。

コマンド
方式

multi: false更新

null以外の値に設定するには、更新がトランザクション内で、または 再試行可能な書き込み として実行される必要があります。

null以外の値に設定するには、更新がトランザクション内で、または 再試行可能な書き込み として実行される必要があります。

シャードキーの変更によってドキュメントが別のシャードに移動される場合は、一括操作で複数のシャードキーの変更を指定できません。バッチ サイズは 1 である必要があります。

シャードキーの変更によってドキュメントが別のシャードに移動されない場合は、一括操作で複数のシャードキーの変更を指定できます。

null以外の値に設定するには、操作が トランザクション 内で、または 再試行可能な書き込み として実行される必要があります。

警告

シャーディングされたコレクション内のドキュメントには、シャード キー フィールドがないことがあります。ドキュメントのシャード キーの値を変更するときに、誤ってシャード キーを削除しないように注意してください。

locationフィールドでシャーディングされているsalesコレクションについて考えてみましょう。 コレクションには、 _id 12345location ""を持つドキュメントが含まれています。 このドキュメントの フィールド値をアップデートするには、次のコマンドを実行します。

db.sales.updateOne(
{ _id: 12345, location: "" },
{ $set: { location: "New York"} }
)

Tip

以下も参照してください。

戻る

コレクションの再シャーディング

項目一覧