1

AWS でホストされ、mongo db バージョン 3.6 を使用するドキュメント db のシャード クラスターがあり、コレクションに変更があるたびに、変更ストリームを取得するために node.js コードに collection.watch() 関数を実装したいと考えています。レプリカ モードで実行されているローカル ホスト mongodb サーバーに接続している間、正常に動作し、ノード js(クライアント) で変更ストリームを取得していますが、AWS でホストされているドキュメント db シャード クラスターに接続しようとしているときに、取得していますエラーMongoError: 集約ステージはサポートされていません: '$changeStream'

localhost ポート (27001 および 27002) で実行されているローカル mongo db サーバーをレプリカ モードで接続しましたが、正常に動作していますが、AWS でホストされているドキュメント db クラスターに接続しているときに、上記のエラーが発生します。

これは、ドキュメント db クラスターに接続するために使用しているコードです。

//setting mongoose connection using below code, which is working fine

    const mongoose = require('mongoose');
    let dev_db_url = 'mongodb://<userName>:<Password>@X.X.X.X:27001,X.X.X.X:27002/testDb?replicaSet=rs0&ssl=true';

    const mongoDB = process.env.MONGODB_URI || dev_db_url;
    mongoose.connect(mongoDB,{ useNewUrlParser: true });
    mongoose.Promise = global.Promise;
    const db = mongoose.connection;

接続をセットアップした後、以下のコードを使用してウォッチ機能を実装し、changeStream を探します。

db.once('open', () => {
    console.log('::::::::::::::::::::Server Connected::::::::::::::::::::');
    const productCollection = db.collection('myCollectionName');
    const changeStream = productCollection.watch();
    changeStream.on('change', (change) => {
        console.log(change);      
    });
  });

以下の行で正確なエラーが発生しています

 changeStream.on('change', (change) => {
        console.log(change);      
    });

エラーは「MongoError: Aggregation stage not supported: '$changeStream'」です

正確なエラー スタック トレース:

    ::::::::::::::::::::Server Connected::::::::::::::::::::
    C:\Users\change_stream\node_modules\mongodb\lib\utils.js:132
          throw err;
          ^

    MongoError: Aggregation stage not supported: '$changeStream'
        at Connection.<anonymous> (C:\Users\change_stream\node_modules\mongodb-core\lib\connection\pool.js:443:61)
        at Connection.emit (events.js:198:13)
        at processMessage (C:\Users\change_stream\node_modules\mongodb-core\lib\connection\connection.js:364:10)
        at TLSSocket.<anonymous> (C:\Users\change_stream\node_modules\mongodb-core\lib\connection\connection.js:533:15)
        at TLSSocket.emit (events.js:198:13)
        at addChunk (_stream_readable.js:288:12)
        at readableAddChunk (_stream_readable.js:269:11)
        at TLSSocket.Readable.push (_stream_readable.js:224:10)
        at TLSWrap.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
    Emitted 'error' event at:
        at processNewChange (C:\Users\change_stream\node_modules\mongodb\lib\change_stream.js:436:43)
        at Cursor.<anonymous> (C:\Users\change_stream\node_modules\mongodb\lib\change_stream.js:272:5)
        at Cursor.emit (events.js:198:13)
        at next (C:\Users\change_stream\node_modules\mongodb\lib\cursor.js:1018:14)
        at err (C:\Users\change_stream\node_modules\mongodb\lib\utils.js:411:14)    at executeCallback (C:\Users\change_stream\node_modules\mongodb\lib\utils.js:401:25)
        at handleCallback (C:\Users\change_stream\node_modules\mongodb\lib\utils.js:128:55)
        at cursor._next (C:\Users\change_stream\node_modules\mongodb\lib\operations\cursor_ops.js:194:21)
        at queryCallback (C:\Users\change_stream\node_modules\mongodb-core\lib\cursor.js:662:23)
        at C:\Users\change_stream\node_modules\mongodb-core\lib\connection\pool.js:397:18
        at process._tickCallback (internal/process/next_tick.js:61:11)

私の質問はここにあります。この種のエラーを見た人はいますか? エラーの考えられる根本原因は何ですか? このエラーの修正に役立つ mongodb クラスター側で何かを検証できますか。私は、changeStream が console.log(change) に出力されることを期待していますが、このエラーをスローすることを期待しています。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1