cerrando la conexión mongodb en node.js mientras inserta muchos datos

Estoy intentando escribir un programa para analizar e insertar datos de registros iis en mongodb. Los archivos no son tan grandes, son alrededor de 600 líneas. Tratar de convencer a mis administradores nodejs y mongodb es mejor para esto en comparación con .net y el servidor sql :).
Echa un vistazo al siguiente código en nodejs. Lógica: Analizo cada línea y la convierto en json e inserto el guardado en db. Estoy usando el controlador mongonative.
Problema: la conexión de la base de datos se cierra incluso antes de insertar todas las líneas en la base de datos.
Veo que el archivo de registro tiene 6000 líneas, pero el número de registros en db es solo de 4000. Entiendo que es la característica asíncrona de nodejs. ¿Cómo puedo cerrar la conexión de una manera más determinista (después de verificar si se insertaron todas las líneas)?

var MongoClient = require('mongodb').MongoClient;
var mongoServer = require('mongodb').Server;
var serverOptions = {
    'auto_reconnect': true,
    'poolSize': 5
};

var fs = require('fs');
var readline = require('readline');

var rd = readline.createInterface({
    input: fs.createReadStream('C:/logs/Advisor_Metrics/UI/P20VMADVSRUI01/u_ex130904.log'),
    output: process.stdout,
    terminal: false
});
var mongoClient = new MongoClient(new mongoServer('localhost', 27017, serverOptions));
var db = mongoClient.db('test');
var collection = db.collection('new_file_test');
var cntr = 0;
mongoClient.open(function (err, mongoClient) {
    console.log(err);
    if (mongoClient)
    {        
        rd.on('line', function (line) {
            if (line.indexOf('#') == -1) {
                var lineSplit = line.split(' ');
                var data =
                {
                    d: lineSplit[0],
                    t: lineSplit[1],
                    sip: lineSplit[2],
                    met: lineSplit[3],
                    uri: lineSplit[4],
                    cip: lineSplit[8],
                    cua: lineSplit[9],
                    stat: lineSplit[10],
                    tt: lineSplit[13]
                };

                collection.insert(data, function (err, docs) {
                    console.log('closing connection');
                    //db.close();
                });
            }
        });
    }
})
rd.on('close', function () {
    db.close();
});

Sol 1: una solución sería analizar los objetos json y agregarlos a una matriz y agregar la matriz a mongodb. ¡No me gustaría hacerlo ya que me gustaría analizar todo el enorme archivo de registro en la memoria! ¿Alguna otra solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta