2012-04-18 13 views
13

Jaki jest najlepszy sposób na wykonanie poleceń administratora/konsoli mongodb z pliku node.js? W szczególności chciałbym wyeksportować kolekcję mongodb przy użyciu mongodump po wykonaniu serii insertów. Coś takiego:Jak programowo wykonać komendę mongodump z pliku 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??? 

      }); 
     }); 
    } 
}); 

Odpowiedz

16

Spróbuj użyć 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

Dobrze działa. Dzięki. – TankofVines

1

Innego roku, inna odpowiedź.

Można użyć czegoś podobnego Shelljs do execmongodump lub innych poleceń powłoki UNIX zapewnia.

Powiązane problemy