Search code examples
javascriptmongodbbatch-insert

mongodb batch insert - Javascript not working


I want to insert bunch of records into a collection, but instead of document at a time I want to do it like a batch using "insertMany()". I wrote the script as follows:

var batch = [];
for (i=0; i<10; i++) { 
    names=["exam", "essay", "quiz"]; 
    for (j=0;j<3;j++) { 
        batch += '\n{ student : ' + i + ', type : "' + names[j] + '", score : ' + Math.round(Math.random()*100) + '}' ;
        if (mod i%3 == 0) {
            batch = batch.slice(0, batch.lenght(-1));
            db.scores.insertMany( batch )
            batch=[];
        }
    }
}

The above code is not working. There are two issues: first, the array item have double quotes around them and second, the "slice" is not taking effect.

Need help in fixing the Javascript.


Solution

  • There are a couple of issues here:

    the array item have double quotes around them

    batch += '\n{ student : ' + i + ', type : "' + names[j] + '", score : ' + Math.round(Math.random()*100) + '}' ;

    You want to create an object rather than a string. batch = { student: i, type: names[j], score: ..} will create an object for you.

    the "slice" is not taking effect

    batch = batch.slice(0, batch.lenght(-1));

    You've misspelled length, and length is a property rather than a function. batch.slice() will copy the array (but you're resetting it so it's not actually necessary).