問題タブ [changestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - ストリームからmongodb変更ストリームイベントがクリアされるのはいつですか
監視対象の mongo エンティティが変更/追加されると、mongo はこれらの変更を変更ストリームに記録し、アプリケーションがリッスンできることを理解しています。
単一の変更ストリーム イベントがクリアされた場合、変更ストリームの最大容量はどれくらいですか。最大容量の制限により、ログがサブスクライバーに通知される前に変更ストリームからログが削除されるという否定的なシナリオはありますか?
公式ページでそのようなデータを見つけることができませんでした: https://docs.mongodb.com/manual/changeStreams/
database - ドキュメントが削除されたときにMongoDB changeStreamからfullDocumentを取得するには?
マイコード
Items
私は 2 つのコレクションを持つ MongoDB を持っていCalculations
ます。
Aは、の開始日と終了日の間の日付を持つ DB 内のすべてCalculation
の値に基づいて保存された計算です。Item
Items
Calculation
Mongo 変更ストリーム
作成/更新する良い方法Calculations
は、コレクションにMongo Change Streamを作成しItems
、コレクションへの変更をリッスンしてからItems
関連するを再計算することだと思いますCalculations
。
問題は、Mongo Change Event docsによると、ドキュメントが削除されると、フィールドが省略され、更新する必要があることを通知するfullDocument
削除済みの日付にアクセスできなくなることです。Item
Calculations
質問
fullDocument
ドキュメントの削除によって発生した Mongo Change イベントにアクセスする方法はありますか?
mongoose - MongoError: 集約ステージはサポートされていません: '$changeStream'
AWS でホストされ、mongo db バージョン 3.6 を使用するドキュメント db のシャード クラスターがあり、コレクションに変更があるたびに、変更ストリームを取得するために node.js コードに collection.watch() 関数を実装したいと考えています。レプリカ モードで実行されているローカル ホスト mongodb サーバーに接続している間、正常に動作し、ノード js(クライアント) で変更ストリームを取得していますが、AWS でホストされているドキュメント db シャード クラスターに接続しようとしているときに、取得していますエラーMongoError: 集約ステージはサポートされていません: '$changeStream'
localhost ポート (27001 および 27002) で実行されているローカル mongo db サーバーをレプリカ モードで接続しましたが、正常に動作していますが、AWS でホストされているドキュメント db クラスターに接続しているときに、上記のエラーが発生します。
これは、ドキュメント db クラスターに接続するために使用しているコードです。
接続をセットアップした後、以下のコードを使用してウォッチ機能を実装し、changeStream を探します。
以下の行で正確なエラーが発生しています
エラーは「MongoError: Aggregation stage not supported: '$changeStream'」です
正確なエラー スタック トレース:
私の質問はここにあります。この種のエラーを見た人はいますか? エラーの考えられる根本原因は何ですか? このエラーの修正に役立つ mongodb クラスター側で何かを検証できますか。私は、changeStream が console.log(change) に出力されることを期待していますが、このエラーをスローすることを期待しています。
どんな助けでも大歓迎です。
ありがとう!
mongodb - MongoDB changeStream 初期値
マルチプレイヤー ゲーム アプリをサポートするために MongoDB を使用しています。更新があるたびにクライアントにゲームの状態を通知するために、changeStream を使用しています。
これに関する問題は、クライアントがゲームに変更があった場合にのみ更新を取得することですが、最初にサーバーに接続するときにゲームの現在の状態を取得する方法も必要です. それ以外の場合は、ゲーム ドキュメントを受け取る前に、誰かがゲームの状態を更新するまで待たなければなりません。
RethingDB の changefeeds の初期値機能のようなものが欲しいです。ZeroMQ も同様のパターンを記述しており、これをlast value cachingと呼んでいます。
このパターンを MongoDB で実装する最良の方法は何ですか?
明らかな回避策はfindOne
、最初にゲームに接続するときにクライアントにクエリを実行させることですが、クライアントは変更ストリームの更新と結果の間の順序を解決する方法が必要になりますfindOne
。