закрытие соединения mongodb в node.js при вставке большого количества данных

Я пытаюсь написать программу для анализа и вставки данных журналов iis в mongodb. Файлы неэто так огромнооколо 600 строк. Попытка убедить мое управление nodejs и mongodb лучше для этого по сравнению с .net и sql server :).

Посмотрите на приведенный ниже код в nodejs. Логика: я анализирую каждую строку, конвертирую в json и вставляю сохранение в db. Я использую Mongonative Driver.

Проблема: Соединение с БД закрывается даже до того, как все строки будут вставлены в БД.

Я вижу, что файл журнала имеет 6000 строк, но число записей в БД - только arnd 4000. Я понимаю этоs nodejs 's асинхронная характеристика, в этом, как я могу закрыть соединение более детерминированным способом (после проверки, все ли строки были вставлены)?

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: Решением будет синтаксический анализ объектов json, добавление в массив и добавление массива в mongodb. я бы неЯ хотел бы сделать это, поскольку для этого нужно проанализировать весь огромный лог-файл в памяти! Любое другое решение?

Ответы на вопрос(1)

Ваш ответ на вопрос