我在nodejs上使用stream将mongodb转储到另一个mongodb。
每个副本集我有大约1000万个文档。但是,只有100万次或更少的时间才会调用“数据”事件,然后调用“结束”事件。因此,我无法获得与总文档相等的文档(“数据”事件计数比stream.count低很多)。
请注意,'end'事件后没有'data'事件。
但有时候它有效。它使用相同的代码获取所有1000万个文档。
有什么办法可以调试吗?
代码在这里:
答案 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();