Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I execute the mongodump command programmatically from node.js?

What is the best way to execute mongodb admin/console commands programmatically from node.js? Specifically, I would like to export a mongodb collection using mongodump after performing a series of inserts. Something like this:

// requires and initializing stuff left out for brevity
db.open(function(err, db) {
    if(!err) {
        db.collection('test', function(err, collection) {
            var docs = [{'hello':'doc1'}, {'hello':'doc2'}, {'hello':'doc3'}];

            collection.insert(docs, {safe:true}, function(err, result) {

                // Execute mongodump in this callback???

            });
        });
    }
});
like image 288
TankofVines Avatar asked Apr 18 '12 13:04

TankofVines


2 Answers

Try using child_process.spawn(command, args):

var spawn = require('child_process').spawn;

// ...
  collection.insert(docs, {safe:true}, function(err, result) {
    var args = ['--db', 'mydb', '--collection', 'test']
      , mongodump = spawn('/usr/local/bin/mongodump', args);
    mongodump.stdout.on('data', function (data) {
      console.log('stdout: ' + data);
    });
    mongodump.stderr.on('data', function (data) {
      console.log('stderr: ' + data);
    });
    mongodump.on('exit', function (code) {
      console.log('mongodump exited with code ' + code);
    });
  });
// ...
like image 52
maerics Avatar answered Sep 19 '22 13:09

maerics


A different year, a different answer.

You can use something like Shelljs to exec mongodump or any other commands that the UNIX shell provides.

like image 30
Swaraj Giri Avatar answered Sep 21 '22 13:09

Swaraj Giri