我在一个大型mongoDB集合(~500MG)的游标内对mongoDB执行了几个findOne()查询。
我在做:
var batchSize = 100;
var cursor = Col1.find().lean().cursor({batchSize: batchSize});
cursor.on('data', function (result) {
var parm1 = result.parm1;
var parm2 = result.parm2;
async.parallel([
function(callback){
Coll3.findOne({a: parm1}).then(Col3Res=>{
callback(Col3Res);
});
},
function(callback){
Coll2.findOne({a: parm2}).then(Col2Res=>{
callback(Col2Res);
});
}
], function(err, results){
});
});
VS
var batchSize = 100;
var cursor = Col1.find().lean().cursor({batchSize: batchSize});
cursor.on('data', function (result) {
var parm1 = result.parm1;
var parm2 = result.parm2;
Coll3.findOne({a: parm1}).then(Col3Res=>{
Coll2.findOne({a: parm2}).then(Col2Res=>{
callback();
});
});
});
使用光标内的async.parallel需要比嵌套Coll3和Coll2 findOne更长的时间。这是预期的行为吗?在游标中使用async.parallel会有什么开销?