Mongodb流过早地调用'end'事件

时间:2016-01-02 06:32:03

标签: node.js mongodb

我在nodejs上使用stream将mongodb转储到另一个mongodb。

每个副本集我有大约1000万个文档。但是,只有100万次或更少的时间才会调用“数据”事件,然后调用“结束”事件。因此,我无法获得与总文档相等的文档(“数据”事件计数比stream.count低很多)。

请注意,'end'事件后没有'data'事件。

但有时候它有效。它使用相同的代码获取所有1000万个文档。

有什么办法可以调试吗?

代码在这里:

main.js mongoSync.js

1 个答案:

答案 0 :(得分:0)

在深入研究MongoDB模块后,我发现有错误'未记录的事件。

 stream.on('error', function(error) {
        console.error(error);
        db.close();
 });

然后我再次运行它,等到错误事件发生然后我发现网络连接有问题。添加timeout:false查找功能可以帮助我解决这个问题。

var stream = col.find(mongoSync.query, mongoSync.projection,{timeout:false}).batchSize(mongoSync.batchSize).stream();