У нас есть сегментированный кластер db документов, размещенный на AWS и использующий mongo db версии 3.6, и мы хотим реализовать функцию collection.watch () в коде node.js, чтобы получать поток изменений при каждом изменении в коллекции. Пока я подключаюсь к локальным хост-серверам mongodb, которые работают в режиме реплики, он работает нормально, и я получаю поток изменений в узле js (клиент), но пока я пытаюсь подключиться к сегментированному кластеру документа db, размещенному на AWS, я получаю ошибка MongoError: этап агрегации не поддерживается: '$ changeStream'
Я подключил свой локальный сервер mongo db, работающий на порту localhost (27001 и 27002), в режиме реплики, который работает нормально, но при подключении к кластеру db документов, размещенному на AWS, выдает ошибку, как упоминалось выше.
вот код, который я использую для подключения к кластеру документов 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: этап агрегации не поддерживается: '$ 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), но, скорее, напечатает эту ошибку.
Любая помощь будет оценена по достоинству.
Благодарность!