Comment exécuter db.copyDatabase via le pilote natif MongoDB de NodeJS?

J’ai un script shell qui invoque

mongo --eval "db.copyDatabase('somedatabase', 'somedatabase_duplicate', 'sourcehost')" 

copier une firebase database.

Actuellement, je suis obligé de faire la même chose depuis une application Node.JS. Appel

 mongoCommand = `db.copyDatabase("somedatabase", "somedatabase_duplicate", "localhost")`; db.command(mongoCommand, function(commandErr, data) { if(!commandErr) { log.info(data); } else { log.error(commandErr.errmsg); } }); 

Resulsts toujours dans un message d’erreur “pas de telle commande”.

Éditez pour plus de clarté: L’utilisation de db.admin (). Command () entraîne le même problème et l’utilisation de la commande suggérée dans la description du lien , ici également.

Quelle est la bonne façon d’appeler cette commande ou, alternativement, de cloner une firebase database à partir de Node.JS?

Eh bien, vous essayez de copier la firebase database qui est une opération d’administration, donc vous devez vous occuper d’un compte administrateur. Encore une fois, copier la commande de firebase database est copydb .

essayez d’exécuter cette commande dans shell, db.copyDatabase et vous verrez la source de la commande.

essayer:

 var assert = require('assert'); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost:27017/test'; MongoClient.connect(url, function(err, db) { if (err) { console.log(err); } else { var mongoCommand = { copydb: 1, fromhost: "localhost", fromdb: "test", todb: "test_dup" }; var admin = db.admin(); admin.command(mongoCommand, function(commandErr, data) { if (!commandErr) { console.log(data); } else { console.log(commandErr.errmsg); } db.close(); }); } });