MongoError: Aggregation stage not supported: '$changeStream'
MongoError: Aggregation stage not supported: '$changeStream'
我们有一个文档数据库的分片集群,托管在 AWS 上并使用 mongo 数据库版本 3.6,我们想在 node.js 代码中实现一个 collection.watch() 函数来每当集合发生变化时,获取变更流。当我连接本地主机 mongodb 服务器时 运行 处于副本模式,它工作正常并且我在节点 js(客户端)中获取更改流但是当我尝试连接到文档数据库时托管在 AWS 上的分片集群,我收到错误 MongoError: Aggregation stage not supported: '$changeStream'
我以副本模式在本地主机端口(27001 和 27002)上连接了我的本地 mongo 数据库服务器 运行,这工作正常,但在连接到 AWS 托管文档数据库集群时,它给出了一个错误如上所述。
这是我用来连接到文档数据库集群的代码。
//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 集群端验证一些东西吗,这有助于纠正这个错误。
我希望在 console.log(change) 中打印 changeStream,而是打印它抛出此错误。
任何帮助将不胜感激。
谢谢!
DocumentDB 似乎不支持 ChangeStreams。
请参阅此处的 'Query and Write Operations' 部分:https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis-database.html
我们有一个文档数据库的分片集群,托管在 AWS 上并使用 mongo 数据库版本 3.6,我们想在 node.js 代码中实现一个 collection.watch() 函数来每当集合发生变化时,获取变更流。当我连接本地主机 mongodb 服务器时 运行 处于副本模式,它工作正常并且我在节点 js(客户端)中获取更改流但是当我尝试连接到文档数据库时托管在 AWS 上的分片集群,我收到错误 MongoError: Aggregation stage not supported: '$changeStream'
我以副本模式在本地主机端口(27001 和 27002)上连接了我的本地 mongo 数据库服务器 运行,这工作正常,但在连接到 AWS 托管文档数据库集群时,它给出了一个错误如上所述。
这是我用来连接到文档数据库集群的代码。
//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 集群端验证一些东西吗,这有助于纠正这个错误。 我希望在 console.log(change) 中打印 changeStream,而是打印它抛出此错误。
任何帮助将不胜感激。
谢谢!
DocumentDB 似乎不支持 ChangeStreams。
请参阅此处的 'Query and Write Operations' 部分:https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis-database.html