watch() (コレクションの変更監視)

最終更新:2026-10-09

watch() (コレクションの変更監視)

watch() はコレクションの変更を監視し、Change Stream を返します。例: `db.users.watch([{ $match: { 'operationType': 'insert' } }])`。すべての挿入、更新、削除、置換が変更イベントを発生させます。レプリカセットまたはシャーディングクラスタが必要で、スタンドアロンサーバーではサポートされません。典型的な用途はリアルタイム同期、キャッシュ無効化、監査ログです。

カテゴリインデックスと管理
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.watch(<pipeline>, { fullDocument: 'updateLookup' })

⚙️ パラメータ

パイプライン配列任意。変更イベントを絞り込む集約パイプライン。
fullDocument任意。'updateLookup' は更新イベントに完全なドキュメントを添付します。

戻り値:反復または待ち受けが可能なチェンジストリームカーソル。

▶ 例

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

// watch: users への挿入を監視する
const stream = db.users.watch([
  { $match: { 'operationType': 'insert' } }
])
stream.forEach(ev => print('New user: ' + ev.fullDocument.name))

出力:

New user: Alice
New user: Bob

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Qwatch はスタンドアロンの MongoDB で動きますか?
A動きません。watch() にはレプリカセットかシャーディングクラスタが必要で、スタンドアロン構成ではエラーになります。
Qwatch で挿入だけを監視できますか?
Aできます。パイプラインでフィルタします。例: db.users.watch([{$match: {'operationType': 'insert'}}])
Qwatch() の典型的な用途は?
Aリアルタイム同期、キャッシュ無効化、監査ログ、データ変更に反応するイベント駆動型フローです。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%