【发布时间】:2014-12-22 22:12:52
【问题描述】:
我正在尝试使用 node.js 驱动程序查看 MongoDB oplog,它在理论上可以工作,但它有相当长的时间,因为它似乎正在扫描整个集合。我在 MongoDB 文档中找到了这个:
- 因为可尾游标不使用索引,查询的初始扫描可能很昂贵;但是,在最初用尽光标后,后续检索新添加的文档的成本很低。
有没有办法快速“耗尽”光标以开始拖尾?在我看来,Meteor 的人已经解决了这个问题,但我很难理解与阅读他们的代码的区别。这是我目前拥有的:
var cursorOptions = {
tailable: true,
awaitdata: true,
numberOfRetries: -1
};
var oplogStream = oplogDb.collection('oplog.rs').find(
{
ns: { $regex : /^dbname\./ },
op: "i",
ts: { $gt: lastEntry.ts }
},
cursorOptions
).sort({$natural: -1}).stream();
oplogStream.on('data', publishDocument);
oplogStream.on('end', function() {
log.error("received unexpected end event from oplog watcher.");
});
【问题讨论】:
标签: mongodb