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