問題タブ [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 - mongo シェルで mongo 変更ストリームを作成する
MongoDBは、3.6 リリースで変更ストリームを導入しました。
コードに mongo 変更ストリームを実装し、それがどのように機能するかを理解したいと考えていました。私はJavaドライバーを使用して実装しますが、それはかなり明確です。しかし、mongo シェルで変更ストリームを開く方法があるかどうか知りたいですか? その上で多くのリソースを見つけることができませんでした。
java - Mongo Change Stream 「コマンドを実行する権限がありません」
これが問題です。remote に接続されているローカルmongos
インスタンスがありますmongod
。リモート DB は基本パスワード認証を使用します。シンプルな Scala アプリケーションを使用して、特定のコレクションの ChangeStream ウォッチャーをセットアップしようとしています。実際のコードは次のようになります。
.fullDocument(FullDocument.UPDATE_LOOKUP)
それはライン上で壊れます:
特定のユーザー資格情報mongo shell
がリモート DB とローカルの両方で機能するため、混乱しますmongos
。さらに、そのアプリケーション内でコレクションを使用して他のアクションを実行しようとしました ( などcollection.count()
)。ウォッチャーをセットアップしようとすると、問題が発生します。
java - mongodb 変更ストリームのレジューム トークンが古い場合、Java ドライバーの動作はどうなりますか?
コレクションの変更ストリームを監視するときに、再開トークンを (resumeAfter で) 指定して、opslog でそのトークンの後の変更を取得できます。このトークンが opslog で見つからない場合 (たとえば、クライアントが長時間切断され、古いトークンを提供している場合) はどうなりますか?
特に、非同期 mongodb Java ドライバーはこの状況をどのように検出しますか?
私にとって、その質問は重要です。なぜなら、接続を失ってすべてのデータを再度プルする必要があるかどうか、または変更ストリームに依存してコレクションからすべての変更を取得できるかどうかを検出する必要があるからです。
ドキュメントには、
oplog に、アプリケーションが受信した最後の操作を見つけるのに十分な履歴がある限り、変更ストリームは再開可能です。
しかし、そうでなければ何が起こるかは指定しません。また、クライアントが opslog で最後のトークンを見つけることができるかどうかを検出する方法を判断するために、ドライバーソースを読むのはかなり難しいと思います。
mongodb-3.6 - Mongodb 3.6 変更ストリームの再開トークンのタイムスタンプ
現在、MongoDB 3.6 の changestream 機能を使用しています。
私たちは重い更新/挿入操作であり、変更ストリームを使用して分析用のデータを送信します。リアルタイムでデータを同期する必要がありますが、resumeToken はバイナリであるため、操作のタイムスタンプを見つけるのに苦労し、分析への同期ラグを計算できません。
resumeToken からタイムスタンプを取得する方法や、操作のタイムスタンプを取得するその他の方法はありますか。