$replaceWith (置換)

最終更新:2026-10-09

$replaceWith (置換)

$replaceWith は $replaceRoot と似ていますが、式の結果が null や欠落でも失敗せず、元のドキュメントを保持します。可能なら持ち上げる、というシナリオにぴったりです。それ以外の意味は $replaceRoot と同じです。

カテゴリコアステージ
MongoDB バージョン4.2+
例の言語mongosh(シェル)

📝 構文

{ $replaceWith: <document expression> }

⚙️ パラメータ

ドキュメント式結果がドキュメントを置き換える式。null または欠落していてもかまいません。

戻り値:置き換えられたドキュメントストリーム(結果が null の場合は元を保持)

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $replaceWith: detail があれば昇格する
db.orders.aggregate([
  { $replaceWith: '$detail' }
])

出力:

// detail を持つ注文はそれを出力し、持たないものはそのまま通る

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$replaceWith と $replaceRoot の違いは?
A$replaceWith は結果が null の場合に元のドキュメントを出力します。$replaceRoot はエラーになります。
Q複数フィールドを新しいドキュメントにマージするには?
A$mergeObjects と組み合わせます。例: { $replaceWith: { $mergeObjects: ['$a', '$b'] } }
Q$replaceWith は _id を保持しますか?
Aいいえ。式が _id を明示的に含まない限り保持されません。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%