在find()。cursor中的nodejs Async.parallel

时间:2017-12-01 16:18:30

标签: node.js mongodb asynchronous async.js

我在一个大型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会有什么开销?

0 个答案:

没有答案