2012-04-18 13 views
13

¿Cuál es la mejor manera de ejecutar programáticamente los comandos admin/console de mongodb desde node.js? Específicamente, me gustaría exportar una colección mongodb usando mongodump después de realizar una serie de insertos. Algo como esto:¿Cómo ejecuto el comando mongodump programáticamente desde node.js?

// 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??? 

      }); 
     }); 
    } 
}); 

Respuesta

16

Intente utilizar 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); 
    }); 
    }); 
// ... 
+1

Funcionó bien. Gracias. – TankofVines

1

un año diferente, una respuesta diferente.

Usted puede usar algo como Shelljs a execmongodump o cualquier otro comando que el shell de UNIX proporciona.

Cuestiones relacionadas