$rename (フィールド名変更)
最終更新:2026-10-09
$rename (フィールド名変更)
$rename はフィールド名を変更します。`{ $rename: { 'oldName': 'newName' } }` のように使い、ネストしたフィールドにはドット区切りのパスを指定します。新しい名前がすでに存在する場合は古い値で上書きされ、存在しなければフィールドが作成されます。$rename は配列要素の中のフィールド名は変更できず、ネストしたフィールドを移動しても中間のドキュメントは作成されません。
| カテゴリ | フィールド更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $rename: { <old field name>: <new field name> } }
⚙️ パラメータ
| 旧フィールド名 | 元のフィールド名。 |
|---|---|
| 新フィールド名 | 対象のフィールド名。ドット記法を使用できます。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $rename: username を handle に変更
// フィールドが存在しない場合は無視される
db.users.updateOne(
{ _id: 1 },
{ $rename: { username: 'handle' } }
)
// ネストしたフィールドの名前変更
db.users.updateOne(
{ _id: 1 },
{ $rename: { 'profile.city': 'profile.cityName' } }
)
出力:
// username が handle に、profile.city が profile.cityName になる
📌 注意事項
- 新しい名前のフィールドが存在する場合は古い値で上書きされる
- 配列要素内のフィールドは名前変更できない
- 元のフィールドが存在しない場合は黙って無視される
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$rename でネストしたフィールドを変更できますか?
Aはい。'profile.city' のようなドット区切りのパスで指定します。
Q新しいフィールド名がすでに存在する場合は?
A古い値が既存のフィールドを上書きします。
Q$rename は配列内のフィールドを扱えますか?
Aいいえ。配列要素内のフィールドは要素ごとに更新する必要があります。