0
我有一个MongoDB的本地实例,以--master开头,我可以在开始日志中看到我有一个副本集oplog(文件:/data/db/local.1)创建。并且每当我执行并插入()时,local.1都会更新。MongoDB操作日志流Node.js
我试图尾/流的OPLOG用下面的代码...
MongoDB.connect('mongodb://localhost:27017/test',(e,db) => {
if (e) { return console.log('Connect MongoDB Error',e); }
console.log('Connected MongoDB');
Server.DB = db;
db.collection('oplog.rs').find({}).toArray((e,d) => {
console.log('oplog.rs');
console.log(e);
console.log(d);
})
var updates = db.collection('oplog.rs').find({},{
tailable: true,
awaitData: true,
noCursorTimeout: true,
oplogReplay: true,
numberOfRetries: Number.MAX_VALUE
}).stream();
updates.on('data',(data) => { console.log('data',data); });
updates.on('error',(e) => { console.log('error',e); });
updates.on('end',(end) => { console.log('end',end); });
});
守则登录开始下面...
oplog.rs
null
[]
但是没有从流输出,我设置numberOfRetries到一个较低的值I得到的错误..
error { MongoError: No more documents in tailed cursor
at Function.MongoError.create (/Users/peter/node_modules/mongodb-core/lib/error.js:31:11)
at nextFunction (/Users/peter/node_modules/mongodb-core/lib/cursor.js:637:50)
at /Users/peter/node_modules/mongodb-core/lib/cursor.js:588:7
at queryCallback (/Users/peter/node_modules/mongodb-core/lib/cursor.js:211:18)
at Callbacks.emit (/Users/peter/node_modules/mongodb-core/lib/topologies/server.js:116:3)
at Connection.messageHandler (/Users/peter/node_modules/mongodb-core/lib/topologies/server.js:282:23)
at Socket.<anonymous> (/Users/peter/node_modules/mongodb-core/lib/connection/connection.js:273:22)
at emitOne (events.js:96:13)
at Socket.emit (events.js:189:7)
at readableAddChunk (_stream_readable.js:176:18)
name: 'MongoError',
message: 'No more documents in tailed cursor',
tailable: true,
awaitData: true }
end undefined
我现在已经连接到一个Atlas集群,仍然oplog.rs是空的,tail()导致相同的消息。 (尝试local.oplog.rs/oplog.rs/oplog)。 – user3094755
你确定使用'local'数据库吗?你究竟如何尝试local.oplog.rs *?为了清楚起见,它假设是'MongoDB.connect'('mongodb:// host:port/local',(e,db)'。你运行'rs.status()'时有什么?和从shell中获得'rs.config()' –
好吧,我现在看到了,我需要使用db/local,它将成为集群上的全局数据库,所以我认为它不适用于我的应用程序,因为我想为一个给定的数据库捕获事务,而不是所有的数据库,所以我可以过滤全局数据库/本地,或者为每个数据库创建新的cappedCollection感谢您的回答 – user3094755