$out (出力)
最終更新:2026-10-09
$out (出力)
$out は、パイプラインの結果を指定したコレクションに書き込み、以前の内容をすべて置き換えます。ターゲットがなければ自動作成されます。最終ステージでなければならず、$merge とは併用できません。コレクションレベルのロックを取り、データを完全に置き換えるため、オフラインのレポートやキャッシュテーブルに適します。$out は MongoDB 4.4 で別データベースへの書き込みに対応しました。
| カテゴリ | 高度と診断 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $out: "<collection>" }
⚙️ パラメータ
| 対象コレクション | 書き込み先コレクションの名前。 |
|---|
戻り値:ドキュメントは後続に流れません。結果は対象コレクションに書き込まれます
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $out: 2024 年の注文を新しいコレクションに書き出す
db.orders.aggregate([
{ $match: { year: 2024 } },
{ $out: 'orders_2024' }
])
出力:
// orders_2024 が完全に置き換えられる
📌 注意事項
- パイプラインの最終ステージでなければならない
- ターゲットコレクションは完全に置き換えられ、追記ではない
- 書き込み中はコレクションレベルのロックを取り、大規模データでは並行操作をブロックする
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$out は既存コレクションを上書きしますか?
Aはい。コレクション全体が置き換えられます。失敗時は元のコレクションが保持されます。
Q$out と $merge はどちらを使うべきですか?
A完全な置き換えには $out、増分更新やキー単位のマージには $merge を使います。
Q$out は別のデータベースに書き込めますか?
AMongoDB 4.4 以降、'otherdb.coll' として書き込めます。