Nodejs returning mongodb 2 collection data with asynchronous call -- need to improve code

i want to improve code

this is node.js code when i do an ajax call from client side, data i need to send back is kind of inner join of two collection in mongodb

as mongodb calls are asynchronous

app.get('/temppage', ensureAjaxAuthenticated, function(req, res){
    var insertData1 = {
        "valid" : true
    };
    var output = new Array();
    db.collection('coll1').find(insertData1).toArray(function(err, calllist1){
        for(var i=0; i < calllist1.length; i++)
        {
            var insertData2 = {
                "coll1_id" : calllist1[i]._id
            };
            db.collection('coll2').find(insertData2).toArray(function(err, calllist2){

                output[i] = calllist1;
                output[i].calllist2 = calllist2;
                if(i == (calllist1.length - 1) )
                {
                    res.send(output) ;
                }
            });
        }
    });
});

above code works fine but if i do following

 app.get('/temppage', ensureAjaxAuthenticated, function(req, res){
    var insertData1 = {
        "valid" : true
    };
    var output = new Array();
    db.collection('coll1').find(insertData1).toArray(function(err, calllist1){
        for(var i=0; i < calllist1.length; i++)
        {
            var insertData2 = {
                "coll1_id" : calllist1[i]._id
            };
            db.collection('coll2').find(insertData2).toArray(function(err, calllist2){

                output[i] = calllist1;
                output[i].calllist2 = calllist2;
            });
        }
    });
    res.send(output) ;
});

problem is 'output[i].calllist2' coming undefind
please help
( can any one improve above code by using closure or any method?)