MongoError: этап агрегации не поддерживается: '$ changeStream'

У нас есть сегментированный кластер 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), но, скорее, напечатает эту ошибку.

Любая помощь будет оценена по достоинству.

Благодарность!


person Sandeep Bhalothia    schedule 24.07.2019    source источник
comment
Amazon DocumentDB - это отдельная реализация от сервера MongoDB. DocumentDB использует проводной протокол MongoDB 3.6, но есть несколько функциональных различия и поддерживаемые команды подмножество тех, что доступны в MongoDB 3.6. Если вы планируете развернуть на DocumentDB, вы, вероятно, захотите протестировать экземпляр DocumentDB, чтобы убедиться, что функции, которые вы планируете использовать, будут доступны.   -  person Stennie    schedule 25.07.2019
comment
@Stennie Спасибо! Это помогло узнать, что changeStream не поддерживается документом db.   -  person Sandeep Bhalothia    schedule 25.07.2019


Ответы (1)


Похоже, DocumentDB не поддерживает ChangeStreams.

См. Раздел «Операции запросов и записи» здесь: https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis-database.html

person Adam Harrison    schedule 24.07.2019
comment
Спасибо, Адам! Это полезно. - person Sandeep Bhalothia; 25.07.2019
comment
С 23 октября 2019 г. поддерживаются потоки изменений. aws.amazon.com/about-aws/whats-new/2019/10/ - person Matthew Pope; 18.12.2019